1 पॉइंट द्वारा GN⁺ 4 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • लोकल voice generation अब dedicated GPU के बिना भी काफी व्यावहारिक गुणवत्ता दे सकता है, और उदाहरण वाले environment में GPU को LLM inference के लिए छोड़कर TTS को CPU प्रोसेस करता है
  • Kokoro 82M parameters वाला model है, लेकिन English, Chinese, Hindi जैसी कई भाषाओं को support करता है और करीब 50 voices देता है; यह English के लिए सबसे ज़्यादा optimized है
  • सबसे आसान setup Kokoro-FastAPI container चलाने का तरीका है, जिसमें voice model पहले से शामिल होते हैं और image size करीब 5GB है
  • यह OpenAI speech API के compatible interface देता है, जिससे मौजूदा voice API आधारित programs को लोकल TTS में अपेक्षाकृत आसानी से बदला जा सकता है
  • छोटे paragraph की synthesis में Intel Core i7-4770K पर 4.7 सेकंड, Apple M2 Pro पर 4.5 सेकंड, और AMD Ryzen 7 8745HS पर 1.5 सेकंड लगते हैं, इसलिए लोकल LLM responses को पढ़ने के बजाय सुनने वाला उपयोग संभव है

सिर्फ CPU से Kokoro TTS चलाना

  • कुछ साल पहले तक realistic लोकल voice generation मुश्किल था, लेकिन अब privacy को बाहरी services को सौंपे बिना high-quality voice बनाई जा सकती है
  • उदाहरण पहले कवर की गई लोकल LLM के लिए GTX 1080 Ti machine पर चलाया गया
    • उस machine का dedicated GPU LLM inference के लिए reserved है
    • voice synthesis सिर्फ CPU का इस्तेमाल करती है
  • इस्तेमाल किया गया model Kokoro है
    • यह 82M parameters वाला model है
    • English, Chinese, Hindi जैसी कई भाषाओं में realistic voices generate करता है
    • करीब 50 voices देता है, और मुख्यतः English के लिए optimized है
  • सबसे सरल server setup Kokoro-FastAPI container image इस्तेमाल करना है
    • इसमें पहले से downloaded voice models शामिल हैं
    • इसी वजह से container image size करीब 5GB है
  • Docker या Podman चलाने की command:
    podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu
    
  • चलाने के बाद web UI localhost:8880/web पर खोला जा सकता है, जहां text डालकर audio generate किया जा सकता है और auto-play किया जा सकता है

OpenAI-compatible API और example run

  • Kokoro-FastAPI container web UI के अलावा OpenAI speech API compatible TTS interface देता है
    • मौजूदा OpenAI speech API इस्तेमाल करने वाले programs को आसानी से adapt किया जा सकता है
    • JavaScript और Python example code github.com/remotebrowser/speak पर है
  • JavaScript run example:
    export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
    ./speak.js "Good morning! How are you today?"
    
  • Python run example:
    export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
    ./speak.py "Good morning! How are you today?"
    
  • Generated audio MP3 file के रूप में save होता है
    • अगर SoX या Sound eXchange installed है, तो audio अपने-आप play हो जाता है
    • SoX की जानकारी sox.sf.net पर देखी जा सकती है
  • कोई दूसरी voice चुनने के लिए TTS_VOICE environment variable set करें
    export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
    export TTS_VOICE="am_eric"
    ./speak.js "Good morning! How are you today?"
    
  • उपलब्ध voices की पूरी list Kokoro VOICES.md में है

CPU के हिसाब से synthesis time और विकल्प

  • am_eric voice से एक छोटा test paragraph synthesize करने पर, 3 runs में best record के आधार पर generation time इस प्रकार रहा
    • Intel Core i7-4770K: 4.7 सेकंड
    • Apple M2 Pro: 4.5 सेकंड
    • AMD Ryzen 7 8745HS: 1.5 सेकंड
  • list में पहला CPU 12 साल पहले released model है, और पुराने CPU पर भी यह काम संभाला जा सकता है
  • OpenAI-compatible container-style TTS alternative के रूप में Speaches भी है
    • Kokoro-FastAPI के विपरीत, container image में voice weights शामिल नहीं होते और उन्हें API से explicitly download करना पड़ता है
    • Whisper सहित high-quality STT features भी देता है
    • अगर application को TTS और STT दोनों चाहिए, तो एक ही जगह से संभालने का विकल्प हो सकता है
  • लोकल LLM के साथ मिलाने पर LLM answers को पढ़ने के बजाय voice में सुनने वाला उपयोग संभव है

1 टिप्पणियां

 
GN⁺ 4 시간 전
Hacker News की राय
  • मैंने accessibility products में Kokoro का काफ़ी इस्तेमाल किया है, और यह अच्छा लगा कि समान गुणवत्ता वाले कई TTS की तरह इसके लिए NVidia GPU की ज़रूरत नहीं पड़ती
    खास तौर पर यह बात पसंद आई कि इसमें IPA pronunciation guide को manually डाला जा सकता है. इसकी वजह यह थी कि कुछ महत्वपूर्ण शब्द homograph थे और Kokoro उन्हें गलत उच्चारित कर देता था
    हालांकि, जब इससे सिर्फ़ एक-दो शब्द बुलवाओ तो यह कमज़ोर पड़ता है. उदाहरण के लिए, अगर सिर्फ़ "six" बुलवाओ तो यह लगभग हमेशा "ah-six-ah" जैसा बोलता है. लेकिन अगर "The word is: six" जैसी लंबी पंक्ति दो, तो यह सही पढ़ता है, और Kokoro API वाक्य के हर शब्द के timestamp देता है, इसलिए Python script से सिर्फ़ मनचाहा शब्द काटा जा सकता है. intonation थोड़ा सपाट है, लेकिन बहुत स्थिर है
    Discord पर पूछने पर पता चला कि यह छोटे parameter scale की सीमा है, और Kokoro के बचाव में कहूँ तो eleven-labs voices में भी कभी-कभी यही समस्या आती है

    • मैं यही तरकीब कई दूसरे tools में भी इस्तेमाल करता हूँ. अगर Wispr या Google में "Knight" बोलो तो वह "night" बन जाता है, लेकिन "Knight to f3" बोलकर बाद में "to f3" हटा सकते हो
    • यह वास्तव में TTS models की एक आम कमजोरी है
      मेरा use case लगभग पूरा का पूरा single-word है, इसलिए input और output को जोड़ने या split करने की processing अलग से संभालना नहीं चाहता, इस वजह से यह मेरे काम के लिए सही नहीं है
  • यह सच में मेरी रुचि का विषय है, इसलिए मज़ेदार लगा
    पहले मैं whisperx को अलग से maintain करता था, क्योंकि मुझे लगता था कि सिर्फ़ transcription नहीं, बल्कि subtitles जैसी चीज़ों के लिए timing और speaker identification भी अहम हैं. लेकिन यह pyannote पर निर्भर करता है, और licensing भी अस्पष्ट है, इसलिए installation automation भी ज़्यादा मुश्किल हो जाती है
    इसलिए मैंने बेहतर transcription के साथ speaker separation support देने वाला विकल्प ढूँढा, और transcription के लिए parakeet, speaker separation के लिए softformer चुना. लेकिन ज़्यादातर उपलब्ध engines में softformer शामिल नहीं है
    मैंने softformer support के साथ parakeet-rs के लिए OpenAI-compatible server बनाया (https://github.com/altunenes/parakeet-rs), और इसे कई convenience features संभालने वाले desktop transcription app OpenWhispr के साथ इस्तेमाल कर रहा हूँ
    GPU किसी और काम में लगा है, इसलिए अभी तक GPU path नहीं जोड़ा, और फ़िलहाल सिर्फ़ CPU पर transcription करता हूँ, लेकिन ज़रूरत पड़ने पर local में transcription चला पाना बहुत शक्तिशाली लगता है

    • यह text-to-speech है, और वह speech-to-text है
      जिस काम की आप बात कर रहे हैं, उसके लिए parakeet के साथ Senko इस्तेमाल करें तो speaker separation बहुत अच्छी तरह काम करता है. मेरे MacBook पर यह Pyannote और whisper से तेज़ और ज़्यादा सटीक था
    • साधारण whisper.cpp से भी कुछ ऐसा ही किया जा सकता है
  • यह model वाकई बहुत अच्छा है. GPU की कमी की वजह से local models को लगभग छू ही नहीं पाया था, इसलिए अफ़सोस था, लेकिन करीब एक महीने पहले मैंने GTX1650 पर Kokoro इंस्टॉल करके पढ़ने के लिए TTS बनाया
    एक simple WebUI में URL या copied text blocks paste करने पर Python उन्हें साफ़ करके Kokoro को भेजता है, TTS बनाता है, और उसका output Apple Podcasts के लिए RSS के रूप में देता है. मैं इसे सुबह गाड़ी चलाते समय सेव किए हुए लेख और ब्लॉग पोस्ट सुनकर catch up करने के लिए इस्तेमाल करता हूँ
    कभी न कभी मैं अलग-अलग voices बाँटकर, सेव किए हुए news items को radio morning show की तरह सुनाने वाला NotebookLM जैसा कुछ भी बनाना चाहूँगा

  • कुछ महीने पहले मैंने एक Chrome extension बनाया था जो किसी भी webpage पर यह काम कर देता है, और पढ़े जा रहे वाक्य को साथ-साथ highlight भी करता है
    इससे container चलाने और website का content copy-paste करने, दोनों steps छूट जाते हैं, इसलिए जो लोग Kokoro को ज़्यादा आसानी से इस्तेमाल करना चाहते हैं उनके लिए यह उपयोगी हो सकता है
    https://chromewebstore.google.com/detail/local-reader-ai-on-...

  • TTS ने सच में बहुत प्रगति की है और विकल्प भी बहुत हैं. Kokoro है, और Pocket TTS 100M का छोटा model होते हुए भी voice cloning कर सकता है
    Chatterbox Turbo थोड़ा बड़ा है, लेकिन voice emotion control को बेहतर support करता है, और Fish Audio S2 इससे भी बड़ा है, लेकिन tone और emotion को लगभग बिना किसी सीमा के कहीं ज़्यादा बारीकी से control कर सकता है. यह सब MacBook पर आसानी से चल जाता है

  • TTS models की तुलना शुरू करने के लिए अच्छा repository यह है: https://github.com/5uck1ess/tts-bench
    Kokoro को देखें तो, यह मानते हुए कि model 1.5 साल पहले जारी हुआ था, यह सच में बहुत अच्छा है, और अपने size की तुलना में शानदार प्रदर्शन देता है: https://5uck1ess.github.io/tts-bench/scores.html

  • मैंने पहले local TTS के लिए Piper इस्तेमाल किया था, Kokoro भी दिलचस्प लग रहा है

  • बहुत बढ़िया. मैं Linux इस्तेमाल करता हूँ, इसलिए Aqua या Whipsrflow वगैरह का उपयोग नहीं कर पाता, और जनवरी से अपना बनाया हुआ solution इस्तेमाल कर रहा हूँ
    हाल ही में इसे व्यवस्थित करके install करना आसान बनाया है. रुचि हो तो यहाँ देख सकते हैं: https://github.com/Hugo0/voiceio
    समय के साथ यह खुद बेहतर होता गया, local machine पर चलता है, और कुल मिलाकर काम लायक software है. आजकल मेरे PC interaction का 60% शुद्ध voice input है

    • यह text-to-speech है, और वह speech-to-text है. फिर भी STT दिलचस्प लग रहा है
  • मुझे Kokoro सच में बहुत पसंद है. मैं इसका इस्तेमाल उन ebooks को पढ़वाने के लिए करता हूँ जिनकी audiobook नहीं होती, और उस काम के लिए यह काफ़ी अच्छा है
    मैंने epub/html पढ़कर model चलाने और mp3 लिखने वाली एक Python script बना रखी है
    Kokoro जिन भाषाओं को support करता है उनकी संख्या सीमित है, इसलिए Dutch support के लिए मुझे दूसरा model इस्तेमाल करना पड़ा, लेकिन उसकी quality उतनी अच्छी नहीं है. आम तौर पर वे काफ़ी धीमे और बड़े भी होते हैं, इसलिए 8GB VRAM के लिए बहुत भारी पड़ते हैं
    आख़िर में मैंने Windows built-in TTS तक इस्तेमाल किया, जो उतना natural नहीं सुनाई देता, लेकिन कम से कम ज़्यादातर शब्दों का उच्चारण कर लेता है और बहुत तेज़ है

  • मैंने एक दिन AI के साथ प्रयोग करते हुए Kokoro से महँगी layers हटा दीं, और अब यह phone CPU और MNN पर 3 गुना तेज़ चलता है
    quality बहुत मिलती-जुलती है. यह environment के हिसाब से बदल सकता है, लेकिन script यहाँ है: https://github.com/DavidVentura/translator-rs/blob/master/sc...