Talk-Llama
(github.com/ggerganov)- Talk-Llama
whisper.cppका एक उदाहरण है, जिसमें टर्मिनल में माइक्रोफ़ोन से बोलने पर Whisper आवाज़ को टेक्स्ट में बदलता है और LLaMA जवाब देता है - माइक्रोफ़ोन ऑडियो कैप्चर के लिए SDL2 की आवश्यकता होती है, और बिल्ड के समय CMake विकल्प
WHISPER_SDL2=ONचालू करना होता है - चलाते समय
-mwसे Whisper मॉडल निर्दिष्ट किया जाता है, और रीयल-टाइम बातचीत के लिएbaseयाsmallमॉडल की सिफारिश की जाती है -mlमें ggml-संगत LLaMA मॉडल निर्दिष्ट किया जाता है, और मॉडल तैयार करने का तरीकाllama.cppके निर्देशों का पालन करने के लिए बताया गया है--session FILEका उपयोग करने पर मॉडल state को सेव/लोड किया जा सकता है, जिससे लंबी बातचीत या कई रन के दौरान कॉन्टेक्स्ट बनाए रखना संभव होता है
टर्मिनल वॉइस चैट उदाहरण
whisper.cpp/examples/talk-llamaटर्मिनल में LLaMA AI के साथ आवाज़ के जरिए बातचीत करने का एक उदाहरण है- 2 नवंबर 2023 तक का परफ़ॉर्मेंस डेमो M2 Ultra पर Whisper Medium + LLaMA v2 13B Q8_0 संयोजन के साथ चलाया गया बताया गया है
- पहले का डेमो CPU पर चलने के उदाहरण के रूप में अलग वीडियो में दिया गया है
बिल्ड और रन प्रक्रिया
whisper-talk-llamaमाइक्रोफ़ोन ऑडियो कैप्चर के लिए SDL2 लाइब्रेरी पर निर्भर करता है- OS के अनुसार SDL2 इंस्टॉल करने के उदाहरण इस प्रकार हैं
- Debian-आधारित Linux:
sudo apt-get install libsdl2-dev - Fedora Linux:
sudo dnf install SDL2 SDL2-devel - Mac OS:
brew install sdl2
- Debian-आधारित Linux:
- CMake बिल्ड में
WHISPER_SDL2=ONविकल्प सक्रिय किया जाता हैcmake -B build -S . -DWHISPER_SDL2=ONcmake --build build --config Release
- रन उदाहरण में Whisper मॉडल, LLaMA मॉडल, प्रॉम्प्ट और थ्रेड की संख्या एक साथ दी जाती है
./build/bin/whisper-talk-llama -mw ./models/ggml-small.en.bin -ml ../llama.cpp/models/llama-13b/ggml-model-q4_0.gguf -p "Georgi" -t 8
मॉडल निर्दिष्ट करने के विकल्प
-mwआर्ग्युमेंट उपयोग किए जाने वाले Whisper मॉडल को निर्दिष्ट करता है- रीयल-टाइम अनुभव के लिए
baseयाsmallमॉडल की सिफारिश की जाती है
- रीयल-टाइम अनुभव के लिए
-mlआर्ग्युमेंट उपयोग किए जाने वाले LLaMA मॉडल को निर्दिष्ट करता हैggml-संगत LLaMA मॉडल कैसे प्राप्त करें, इसके लिए llama.cpp के निर्देश देखें
सेशन फ़ाइल के साथ कॉन्टेक्स्ट जारी रखना
whisper-talk-llamaअधिक सुसंगत और निरंतर बातचीत के लिए सेशन प्रबंधन का समर्थन करता है- यह पिछले इंटरैक्शन का कॉन्टेक्स्ट बनाए रख सकता है, जिससे उपयोगकर्ता के अनुरोधों को अधिक स्वाभाविक रूप से समझकर जवाब दिया जा सके
- सेशन समर्थन रन के समय
--session FILEकमांड-लाइन विकल्प से सक्रिय किया जाता है- हर इंटरैक्शन के बाद
whisper-talk-llamaकी मॉडल state निर्दिष्ट फ़ाइल में सेव कर दी जाती है - फ़ाइल मौजूद न हो तो नई बनाई जाती है
- फ़ाइल मौजूद हो तो उसी से मॉडल state लोड कर पिछला सेशन फिर शुरू किया जाता है
- हर इंटरैक्शन के बाद
- लंबी बातचीत या कई सेशन में AI assistant के साथ इंटरैक्ट करते समय, यह पिछले इंटरैक्शन को याद रखकर अधिक प्रासंगिक कॉन्टेक्स्ट-आधारित जवाब देने में उपयोगी है
- उदाहरण रन:
./build/bin/whisper-talk-llama --session ./my-session-file -mw ./models/ggml-small.en.bin -ml ../llama.cpp/models/llama-13b/ggml-model-q4_0.gguf -p "Georgi" -t 8
वॉइस आउटपुट और फ़ीडबैक
- जनरेट किए गए टेक्स्ट जवाब को आवाज़ में सुनने के लिए TTS टूल की आवश्यकता होती है
- आप अपनी पसंद का कोई भी TTS इंजन इस्तेमाल कर सकते हैं, और ज़रूरत के अनुसार speak स्क्रिप्ट को संशोधित कर सकते हैं
- डिफ़ॉल्ट सेटिंग MacOS के
sayया Windows SpeechSynthesizer का उपयोग करती है - फ़ीडबैक के लिए GitHub Discussion #672 का मार्गदर्शन दिया गया है
1 टिप्पणियां
Hacker News की राय
यहाँ देखकर मज़ा आया :)
वीडियो में दिखी चीज़ों की तुलना में अब तक Apple Silicon की performance काफ़ी बेहतर हो गई होगी। whisper.cpp अब GPU पर पूरी तरह चलता है, और पिछले कुछ महीनों में llama.cpp की generation speed भी काफ़ी सुधरी है
असल में performance भी प्रभावशाली है
शानदार है। हाल के एक project में मैंने Llama को open-source speech synthesis model से जोड़कर देखा था, और इसमें engineering के कई दिलचस्प पहलू थे
निजी तौर पर मेरे लिए सबसे उपयोगी coding assistant वे हैं जो कठिन सोच या problem solving को अपने ऊपर लेने की कोशिश करने के बजाय, docstring से arguments और types generate करने या उल्टा करने जैसे तरीक़ों से manual work का बोझ कम करते हैं। ज़्यादा जटिल कामों के लिए assistant को काफ़ी अच्छा starting point देना पड़ता है
Coding करते समय मैं अक्सर खुद से बातें करता हूँ, और अगर ऐसा tool मेरी बातों को context vector में embed करके additional input की तरह इस्तेमाल कर सके और model को बेहतर starting point दे सके, तो यह सच में futuristic और उपयोगी लगेगा। मैंने Copilot को थोड़ी देर से अपनाया और हमेशा इस्तेमाल नहीं करता, लेकिन अगर किसी को कुछ ऐसा मिलता-जुलता पता हो तो जानना चाहूँगा
अगर 270 दिनों के अंदर open weights proposal हक़ीक़त बन गया, तो कुछ महीनों बाद यह लगभग ban भी हो सकता है
मुझे जहाँ तक मिला, open weights models को ban करने वाली कोई बात बिल्कुल नहीं है। Final recommendations में “ban करें” शामिल होने की कोई ख़ास वजह भी नहीं दिखती
उदाहरण के लिए, सरकार open weights models अपनाने का burden इतना बढ़ा दे कि OpenAI खरीदना कहीं ज़्यादा आकर्षक लगे—इस तरह incumbents के पक्ष में recommendation की कल्पना की जा सकती है। लेकिन यह मूल बात से अलग है
Executive order पढ़ने में काफ़ी आसान लगता है; क्या मैंने text में कुछ miss किया है?
https://www.whitehouse.gov/briefing-room/presidential-action...
मैं मानता हूँ कि scope जिस तरह खुला छोड़ा गया है, वह चिंता की बात है, लेकिन actual ban कहाँ है?
Arch और Debian पर
./talk-llamaचलाने पर floating point exception आता है।sdl2libऔरffmpegभी check किए, और related issue(https://github.com/ggerganov/whisper.cpp/issues/1325) भी देखा, लेकिन solve नहीं हो रहा। क्या किसी और को भी यह issue आ रहा है?https://github.com/ggerganov/whisper.cpp/issues/352#issuecom...
पक्का नहीं कि क्या बदला, लेकिन basically मैंने
ffmpegऔरlibsdl2-devहटाए और repository root सेmakeचलाया। फिरlibsdl2औरffmpeginstall किए औरmake talk-llamaकिया4-core i7-8550U और 16GB RAM पर यह काफ़ी slow है
repository root से मैंने लगभग यह किया:
$ sudo apt purge ffmpeg$ make clean$ git pull$ make$ sudo apt install libsdl2-dev$ make talk-llama$ ./talk-llama -mw ./models/ggml-small.en.bin -ml ../llama.cpp/models/llama-2-13b.Q4_0.gguf -p "t0mk" -t 8\n\nक्या ऐसा कोई text-to-speech solution नहीं है जो Llama की generation खत्म होने का इंतज़ार किए बिना text stream लेकर तुरंत बोल दे?
शायद यह तभी संभव होगा जब model buffer को इतनी तेजी से भर सके कि speech synthesis engine रुकने न पाए
क्या पूरे LLM response के खत्म होने तक इंतज़ार करने के बजाय, जैसे-जैसे बनता जाए वैसे लगभग 6 tokens के batch को speech synthesis में stream करने से latency कम हो सकती है?
अभी यह सिर्फ basic adaptive threshold इस्तेमाल करने वाला utterance end detection करता है, जिसे बेहतर बनाया जा सकता है; और जब बड़ा LLM compute कर रहा हो, तब एक छोटा LLM आम तौर पर दिए जाने वाले तेज़ response तैयार कर सकता है। speech synthesis को भी chunk या sentence level पर stream किया जा सकता है
ऐसे chatbot के बेहतर open source versions में से एक मुझे https://github.com/yacineMTB/talk लगता है। अब शायद इसी तरह के और भी कई projects मौजूद हों
Llama के लिए सबसे अच्छा chat interface क्या है? मेरे पास 3090 है, और मैं terminal से quick coding tasks के लिए कोई model चलाकर देखना चाहता हूँ
pacman -S ollamaollama serveollama run llama2:13b 'insert prompt'https://ollama.ai/
https://github.com/cogentapps/chat-with-gpt
लगता है यह ElevenLabs और OpenAI API इस्तेमाल करने के लिए बना है, लेकिन इसे local Whisper.cpp और Llama के हिसाब से set करना भी आसान हो सकता है
वे hiring कर रहे हैं और कोई public monetization strategy नहीं है, इसलिए मुझे उम्मीद है कि जल्द ही कुछ free features paid हो जाएंगे या जानबूझकर सीमित कर दिए जाएंगे। फिर भी llama.cpp पर पूरी तरह निर्भर free LLMs के लिए thin apps के लिए vendor lock-in बनाना मुश्किल है। अगर features से ज्यादा open source priority है, तो मैं भी ollama recommend करूँगा
technical questions के लिए अभी Wizard चलन में है, ऐसा मुझे लगता है
local open source LLM चलाने के लिए ollama से मैं सच में काफी संतुष्ट हूँ, लेकिन Whisper या नए open source speech synthesis models के लिए उसका equivalent क्या है? Whisper को local पर इतनी आसानी से set कराने वाला project मुझे ठीक से नहीं पता
WhisperScript भी काफी अच्छा लग रहा था: https://github.com/openai/whisper/discussions/1028
वैसे भी WhisperX setup इतना मुश्किल नहीं है। कुछ महीने पहले मैंने जो step-by-step notes बनाए थे: https://llm-tracker.info/books/logbook/page/transcription-te...
https://goodsnooze.gumroad.com/l/macwhisper
speech synthesis के लिए coqui में कई languages में user experience और models सबसे अच्छे हैं, लेकिन quality commercial speech synthesis providers के स्तर की नहीं है
क्या कोई आसानी से समझा सकता है कि यह क्या कर सकता है? क्या यह chat का context सीखते और maintain करते हुए किसी तरह की long-term memory बना सकता है?
LLM की context limit उस model और settings पर निर्भर करती है जिसे user चुनता है। उदाहरण के लिए, आप Llama 2, Wizard Vicuna आदि में से कौन-सा model इस्तेमाल करते हैं, और context window कैसे set की गई है, इस पर निर्भर करता है। LLM user को “answer” करने के बजाय user और एक useful assistant के बीच conversation history में सबसे probable next content predict करता है; नतीजा यह होता है कि वह useful assistant होने का नाटक करने में सफल होकर वास्तव में useful assistant बन जाता है—इसलिए यह थोड़ा भ्रमित कर सकता है
pipeline बदलने पर ऐसा behavior भी संभव लगता है। structure
speech recognition → Wrapper[Llama] → speech synthesisहो जाए, और Wrapper Llama को उसका काम करने देते हुए input text पर extra processing कर सके, तो मामला दिलचस्प हो जाता हैWrapper conversation analyze करके “इस व्यक्ति का नाम Bob है, पुरुष है, 35 साल का है, dogs पसंद करता है और चीज़ें organized रखना पसंद करता है, शाम 5 बजे बेटी को call करने का reminder चाहता है, Antarctic mafia का undercover agent है, और चाहता है कि उससे strong Polish accent में बात की जाए” जैसी key चीज़ें निकाल सकता है और उसी के हिसाब से action ले सकता है
उदाहरण के लिए HomeAssistant के जरिए शाम 5 बजे का reminder बना सकता है, speech synthesis engine को Polish accent पर set कर सकता है, और आगे के runs की initial conversation history modify कर सकता है। internal chat conversation में व्यक्ति का नाम डालना, और अगली बातचीत के preamble में उसकी interests और personality को compress करके देना—ऐसे तरीके हो सकते हैं
इससे दूसरे tools के actions के जरिए interactivity मिलती है, और अगली conversation history modify करके continuity भी बनाई जा सकती है
इसमें सच में बहुत strong ELIZA vibe आती है