2 पॉइंट द्वारा GN⁺ 2023-11-03 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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
  • CMake बिल्ड में WHISPER_SDL2=ON विकल्प सक्रिय किया जाता है
    • cmake -B build -S . -DWHISPER_SDL2=ON
    • cmake --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 टिप्पणियां

 
GN⁺ 2023-11-03
Hacker News की राय
  • यहाँ देखकर मज़ा आया :)
    वीडियो में दिखी चीज़ों की तुलना में अब तक Apple Silicon की performance काफ़ी बेहतर हो गई होगी। whisper.cpp अब GPU पर पूरी तरह चलता है, और पिछले कुछ महीनों में llama.cpp की generation speed भी काफ़ी सुधरी है

    • नए demo video commit तक सिर्फ़ 13 मिनट लगे, बुरा नहीं :D
      असल में performance भी प्रभावशाली है
    • लगता है अब आप काफ़ी प्रसिद्ध हो गए हैं। GitHub को ध्यान से follow करने वाले लोगों की संख्या ज़्यादा होने की संभावना है
    • नए demo को सबसे ऊपर लाने के लिए PR भेजा है। मुझे लगता है नया demo काफ़ी बेहतर है
    • इसे चलाने के लिए Apple Silicon सबसे cost-effective है, या अच्छे performance वाले homelab Linux server पर यह सस्ता पड़ सकता है?
    • क्या यह latest distilled Llama पर भी काम करेगा?
  • शानदार है। हाल के एक 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 भी हो सकता है

    • वह दावा Biden executive order के text से support नहीं होता। उसमें बस अलग-अलग government agencies से safety evaluation framework बनाने, open weights models का initial evaluation करने, और 270 दिनों के अंदर President को recommendations submit करने की मांग है
      मुझे जहाँ तक मिला, 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...
    • weights ban होने जैसी कोई बात नहीं दिखती। मैंने जो हिस्सा देखा, वह open weights के risks और benefits पर report बनाने के ज़्यादा करीब है
      मैं मानता हूँ कि scope जिस तरह खुला छोड़ा गया है, वह चिंता की बात है, लेकिन actual ban कहाँ है?
    • यह खतरा कितना गंभीर है? Industry leaders से सलाह लिए बिना ऐसी बेवकूफी को वे लागू कैसे कर पाएँगे?
  • Arch और Debian पर ./talk-llama चलाने पर floating point exception आता है। sdl2lib और ffmpeg भी check किए, और related issue(https://github.com/ggerganov/whisper.cpp/issues/1325) भी देखा, लेकिन solve नहीं हो रहा। क्या किसी और को भी यह issue आ रहा है?

    • PopOS 22.04 पर मैं भी इसी error से जूझ रहा था, इससे मदद मिली:
      https://github.com/ggerganov/whisper.cpp/issues/352#issuecom...
      पक्का नहीं कि क्या बदला, लेकिन basically मैंने ffmpeg और libsdl2-dev हटाए और repository root से make चलाया। फिर libsdl2 और ffmpeg install किए और 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 रुकने न पाए

    • अगर buffer में सिर्फ़ एक word बचा हो, तो llama.cpp से “um”, “uhh” जैसी चीज़ें output करवा दें :D
    • timing और emphasis बेहतर रखने के लिए यह पता होना चाहिए कि sentence किस दिशा में जा रहा है। वरना यह UN interpreter की तरह सपाट ढंग से जुड़ते शब्दों जैसा लग सकता है
    • ElevenLabs और Gemelo.AI इसी use case के लिए text input streaming support करने वाली services हैं। मेरी जानकारी में कोई open-source incremental speech synthesis (Incremental TTS) model नहीं है, लेकिन tokens buffer करके और punctuation आने पर speech synthesis model को भेजकर कुछ वैसा implement किया जा सकता है
  • क्या पूरे LLM response के खत्म होने तक इंतज़ार करने के बजाय, जैसे-जैसे बनता जाए वैसे लगभग 6 tokens के batch को speech synthesis में stream करने से latency कम हो सकती है?

    • हाँ, उस समय मैं ऐसा ही करने वाला था, लेकिन फिर कुछ और काम आ गया। इस छोटे-से example को कई तरीकों से बेहतर बनाया जा सकता है
      अभी यह सिर्फ 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 चलाकर देखना चाहता हूँ

    • ollama वाकई इस्तेमाल में बहुत आसान है। यह एक single binary है जो जरूरत पड़ने पर models download करता है, लगभग वैसे ही जैसे Docker images pull करता है
      pacman -S ollama
      ollama serve
      ollama run llama2:13b 'insert prompt'
      https://ollama.ai/
    • एक open source project है जिसमें voice भी support है:
      https://github.com/cogentapps/chat-with-gpt
      लगता है यह ElevenLabs और OpenAI API इस्तेमाल करने के लिए बना है, लेकिन इसे local Whisper.cpp और Llama के हिसाब से set करना भी आसान हो सकता है
    • open source नहीं है, लेकिन अभी तक free lmstudio.ai है। इसमें chat history, ठीक-ठाक settings UI, आसान prompt management, model management और exploration, simple setup, cross-platform support, और दूसरे tools से जोड़ने के लिए API server feature भी है
      वे hiring कर रहे हैं और कोई public monetization strategy नहीं है, इसलिए मुझे उम्मीद है कि जल्द ही कुछ free features paid हो जाएंगे या जानबूझकर सीमित कर दिए जाएंगे। फिर भी llama.cpp पर पूरी तरह निर्भर free LLMs के लिए thin apps के लिए vendor lock-in बनाना मुश्किल है। अगर features से ज्यादा open source priority है, तो मैं भी ollama recommend करूँगा
    • setup के लिए सबसे आसान यह है: https://faraday.dev/
      technical questions के लिए अभी Wizard चलन में है, ऐसा मुझे लगता है
    • यह इस पर निर्भर करता है कि “best” से आपका मतलब क्या है। अगर जितना संभव हो उतना तेज़ cutting-edge inference चाहिए, तो 4090 पर ExLlama या ExLlamaV2 है
  • local open source LLM चलाने के लिए ollama से मैं सच में काफी संतुष्ट हूँ, लेकिन Whisper या नए open source speech synthesis models के लिए उसका equivalent क्या है? Whisper को local पर इतनी आसानी से set कराने वाला project मुझे ठीक से नहीं पता

    • SRT के लिए कुछ frontends यहाँ हैं: https://www.reddit.com/r/OpenAI/comments/163hzhe/recommended...
      WhisperScript भी काफी अच्छा लग रहा था: https://github.com/openai/whisper/discussions/1028
      वैसे भी WhisperX setup इतना मुश्किल नहीं है। कुछ महीने पहले मैंने जो step-by-step notes बनाए थे: https://llm-tracker.info/books/logbook/page/transcription-te...
    • कुछ महीनों से मैं macOS app MacWhisper से Whisper transcription jobs चला रहा हूँ, और मुझे यह काफी पसंद है
      https://goodsnooze.gumroad.com/l/macwhisper
    • Whisper एक speech recognition model है। CLI से local audio transcribe करने के लिए आप whisperx इस्तेमाल कर सकते हैं, और browser में चलने वाला whisper-turbo.com भी है
      speech synthesis के लिए coqui में कई languages में user experience और models सबसे अच्छे हैं, लेकिन quality commercial speech synthesis providers के स्तर की नहीं है
  • क्या कोई आसानी से समझा सकता है कि यह क्या कर सकता है? क्या यह chat का context सीखते और maintain करते हुए किसी तरह की long-term memory बना सकता है?

    • मैं LLM expert नहीं हूँ, लेकिन मेरी समझ में यह speech recognition → Llama → speech synthesis को किसी third-party server के बजाय अपने PC पर चलाने वाली architecture है
      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 आती है