3 पॉइंट द्वारा GN⁺ 2023-11-20 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • StyleTTS2 style diffusion और बड़े speech language model(SLM) आधारित adversarial learning का उपयोग करके human-level TTS synthesis को लक्ष्य बनाने वाला text-to-speech रूपांतरण मॉडल है
  • style को diffusion model के latent random variable के रूप में मॉडल किया जाता है, जिससे reference speech के बिना text के अनुरूप style जनरेट किया जा सके, और diffusion model की विविध speech synthesis क्षमताओं का उपयोग करने वाला efficient latent diffusion इस्तेमाल किया जाता है
  • WavLM जैसे बड़े pretrained SLM को discriminator के रूप में उपयोग किया जाता है, और differentiable duration modeling लागू करके end-to-end training तथा speech naturalness में सुधार किया जाता है
  • LJSpeech single-speaker dataset में native English speaker evaluation के आधार पर इसने human recordings को surpass किया, VCTK multi-speaker dataset में human recordings के बराबर प्रदर्शन किया, और LibriTTS पर trained model ने zero-shot speaker adaptation में मौजूदा publicly available models से बेहतर प्रदर्शन दिखाया
  • training और inference workflow में single-speaker LJSpeech, multi-speaker VCTK·LibriTTS, और pretrained multi-speaker model आधारित नए speaker fine-tuning को शामिल किया गया है
    • पहले चरण की training के लिए accelerate launch train_first.py --config_path ./Configs/config.yml, और दूसरे चरण की training के लिए python train_second.py --config_path ./Configs/config.yml का उपयोग होता है
    • train_second.py का DDP version काम नहीं करता, इसलिए फिलहाल DP उपयोग किया जाता है, और fine-tuning script भी ऐसी शर्त रखती है जिसमें DDP काम नहीं करता
  • मुख्य execution conditions हैं Python >= 3.7, requirements.txt की installation, demo चलाने पर phonemizer और espeak-ng की installation, तथा LJSpeech data का 24 kHz upsampling
  • pretrained modules में text aligner के लिए ASR, pitch extractor के लिए JDC, और PL-BERT शामिल हैं
    • ASR aligner को English(LibriTTS), Japanese(JVS), Chinese(AiShell) corpus पर pretrained किया गया है
    • JDC pitch extractor को केवल English(LibriTTS) corpus पर pretrained किया गया है
    • PL-BERT को केवल English(Wikipedia) corpus पर pretrained किया गया है, इसलिए अन्य भाषाओं के लिए उस भाषा का PL-BERT चाहिए, और multilingual PL-BERT 14 भाषाओं को support करता है
  • inference single-speaker के लिए Inference_LJSpeech.ipynb और multi-speaker के लिए Inference_LibriTTS.ipynb के माध्यम से उपलब्ध है, और LJSpeech व LibriTTS pretrained models Hugging Face से डाउनलोड किए जा सकते हैं
  • code license MIT License है, और pretrained model का उपयोग करते समय श्रोता को यह बताना होगा कि यह synthesized speech है, या केवल उन्हीं speakers की voice को सार्वजनिक रूप से synthesize किया जा सकता है जिनकी voice उपयोग की अनुमति हो

1 टिप्पणियां

 
GN⁺ 2023-11-20
Hacker News टिप्पणियाँ
  • StyleTTS2, Whisper, OpenHermes2-Mistral-7B जैसे open source हिस्सों से 100% local voice chatbot बनाया, और यह ChatGPT से कहीं तेज़ जवाब देता है
    दूसरे voice assistants की तरह कड़ी Siri-शैली की interaction नहीं, बल्कि असली बातचीत जैसी बारी-बारी से बात करना संभव है, इसलिए मज़ेदार है
    12GB Nvidia GPU वाले Windows gaming PC पर, test के आधार पर 3060 12GB में Python या CUDA छुए बिना एक बार में install करके बातचीत की जा सकती है: https://apps.microsoft.com/detail/9NC624PBFGB7
    demo के लिए headphones चाहिए और यह console app के रूप में चलता है, इसलिए कुछ rough edges हैं, लेकिन ऐसा लगता है कि सिर्फ open source combinations से जल्द ही आम gaming PC पर जो संभव होने वाला है, उसकी झलक पहले से दिखा रहा है; कई improvement models भी हैं जिन्हें अभी reflect नहीं किया जा सका है

    • सोच रहा हूँ कि chatbot को naturally बातचीत करवाना कितना मुश्किल दिखता है
      खासकर अगर सामने वाला बहुत देर तक बोल रहा हो तो मैं बीच में बोलकर रोक सकूँ, या जब मैं बोल रहा हूँ तब AI छोटा-सा acknowledgment दे—यानी बात काटना और बीच में दखल देना आम बातचीत की तरह संभव हो
      अगर speed real-time से तेज़ स्तर तक पहुँच जाए, तो theoretically ऐसी functionality शुरू की जा सकती है; और पूरी तरह natural conversation के लिए AI को चेहरा और gestures देखकर यह judge करने वाली context awareness भी चाहिए लगेगी कि व्यक्ति लंबा बोल रहा है या नहीं
    • चला कर देखा, लेकिन लगता है यह सिर्फ CUDA 11 पर ही काम करता है; मेरा environment पहले से CUDA 12 है, इसलिए test करने के लिए CUDA environment खराब करने का इरादा नहीं है
    • test results मिले-जुले रहे: C:\ के अलावा किसी drive में install करने पर error आया, और C: में move करने पर ठीक से चला
      EVGA 3080Ti 12GB पर भी latency काफी ज़्यादा थी, और मैंने सिर्फ एक बार बोला था, लेकिन ऐसा लगा कि same input को कई बार process करते हुए थोड़े-थोड़े अलग recognition results repeat कर रहा था
      आखिर में अपनी ही आवाज़ सुनकर खुद को जवाब देने की समस्या भी दिखी
    • जानना चाहता हूँ कि क्या 12GB minimum spec है। 8GB पर out-of-memory error आया
    • Whisper input streaming support नहीं करता, इसलिए लगता है कि पूरा LLM response खत्म होने के बाद ही transcription trigger हो सकता है
  • पिछले महीने StyleTTS2 test किया था, और local install करने वालों के लिए मददगार step-by-step notes तैयार रखे हैं: https://llm-tracker.info/books/howto-guides/page/styletts-2
    LJSpeech model के साथ VITS, XTTS से speed और quality की छोटी तुलना भी की थी; StyleTTS2 काफी अच्छा और बहुत तेज़ था: https://fediverse.randomfoo.net/notice/AaOgprU715gcT5GrZ2

    • 4090 पर real-time की तुलना में 15~95 गुना inference—यह तो कमाल है
      सोच रहा हूँ कि in-fill या outpainting जैसी functionality भी संभव है या नहीं; इस quality की ultra-fast speech synthesis से खासकर indie और experimental game development में तरह-तरह के उपयोगों की उम्मीद है
    • guide follow कर रहा हूँ, लेकिन अगर आप पहले से use नहीं कर रहे हैं तो mamba अब recommend नहीं किया जाता
      link का #mambaforge anchor भी काम नहीं कर रहा था
  • दस्तावेज़ थोड़े-बहुत अधूरे से थे, इसलिए सेटअप मिलाने की प्रक्रिया थोड़ी झंझट वाली रही, लेकिन लगभग 20 मिनट बाद WSL Ubuntu 22.04 पर यह ठीक से चल गया
    ऑडियो क्वालिटी बहुत अच्छी है, और मैंने जो दूसरे open source speech synthesis प्रोजेक्ट देखे हैं उनसे कहीं बेहतर है; 4090 GPU के हिसाब से बेहद तेज़ भी है
    ElevenLabs वाली क्वालिटी तक है या नहीं, यह अभी नहीं कह सकता, लेकिन ElevenLabs की खासियत यह है कि उसकी high-quality voice library बड़ी है और उसमें से चुनना आसान है। इस लाइब्रेरी में default female voice के अलावा दूसरी voice चुनने का तरीका मुझे अभी नहीं मिला
    ElevenLabs का असली core फीचर सिर्फ 5 मिनट के एक sample से लगभग तुरंत हो जाने वाली voice cloning है, और यह हैरान कर देने वाली, थोड़ी डरावनी हद तक अच्छी है। उम्मीद है यह फीचर पूरी तरह open source में संभव हो जाएगा। API services कई उपयोगों के लिए बहुत महंगी हैं, और अपेक्षाकृत सस्ता OpenAI भी कुछ हज़ार words generate करने पर करीब 10 cents लेता है

    • यह Ubuntu 22.04 पर test की गई installation procedure है। Google Drive download link 24 घंटे में बहुत ज़्यादा downloads होने के कारण block हो सकता है, लेकिन थोड़ा इंतज़ार करने पर फिर चल जाना चाहिए
      git clone https://github.com/yl4579/StyleTTS2.git  
      cd StyleTTS2  
      python3 -m venv venv  
      source venv/bin/activate  
      python3 -m pip install --upgrade pip  
      python3 -m pip install wheel  
      pip install -r requirements.txt  
      pip install phonemizer  
      sudo apt-get install -y espeak-ng  
      pip install gdown  
      gdown https://drive.google.com/uc?id=1K3jt1JEbtohBLUA0X75KLw36TW7U1yxq  
      7z x Models.zip  
      rm Models.zip  
      gdown https://drive.google.com/uc?id=1jK_VV3TnGM9dkrIMsdQ_upov8FrIymr7  
      7z x Models.zip  
      rm Models.zip  
      pip install ipykernel pickleshare nltk SoundFile  
      python -c "import nltk; nltk.download('punkt')"  
      pip install --upgrade jupyter ipywidgets librosa  
      python -m ipykernel install --user --name=venv --display-name="Python (venv)"  
      jupyter notebook  
      
      इसके बाद /Demo में जाकर Inference_LJSpeech.ipynb या Inference_LibriTTS.ipynb खोलेंगे तो यह चलना चाहिए
    • style cloning के लिए मैंने एक तरीका देखा है जिसमें high-quality fine-tuned speech synthesis के बाद output को RVC pipeline से “enhance” किया जाता है
      structure यह है कि speech synthesis intonation और pronunciation संभालता है, और RVC voice texture संभालता है, इसलिए StyleTTS को इस pipeline के साथ मिलाने पर यह ElevenLabs के करीब पहुँच सकता है
    • LibriTTS demo किसी ऐसे speaker की voice को भी, जिसे पहले नहीं देखा गया, लगभग 5 सेकंड के clip से clone करता है
    • जानना चाहूँगा कि क्या किसी ने ElevenLabs और StyleTTS दोनों में लंबे utterances test किए हैं
      short audio synthesis तो speech synthesis की दुनिया में लगभग solved problem है, लेकिन text-to-speech से audiobook बनाने की कोशिश करें तो समस्याएँ शुरू हो जाती हैं
  • दिलचस्प बात यह है कि TTS2 के examples असली ground-truth voice से भी बेहतर सुनाई देते हैं https://styletts2.github.io/
    उदाहरण के लिए “Then leaving the corpse within the house [...]” example में ground-truth voice house को अजीब तरह से, tone ऊपर जाती हुई जैसी, pronounce करती है, जबकि TTS2 version ज़्यादा natural लगता है
    मैं इसे कई ePub files पर इस्तेमाल करना चाहता हूँ, जैसे जापानी light novels जिनके audiobooks नहीं हैं। अभी मैं Android का Moon+ Reader TTS इस्तेमाल कर रहा हूँ, जो काफी robotic लगता है

    • मेरी पहली पत्नी professional voice actor है, और मैंने देखा कि किसी ने “clearly AI” कहकर खराब review छोड़ दिया था
      2023 में जीतने का कोई तरीका नहीं है
    • pacing बेहतर है, लेकिन निजी तौर पर मुझे अभी भी इसमें काफी साफ़ metallic tone सुनाई देता है, इसलिए यह असली voice से कमतर लगता है
      फिर भी results impressive हैं, और बाकी सभी speech synthesis से बेहतर हैं
    • जानना चाहूँगा कि आप इसे ePub के साथ कैसे जोड़कर इस्तेमाल करने की योजना बना रहे हैं। मेरी भी मिलती-जुलती स्थिति है, इसलिए ebooks में ऐसा कुछ इस्तेमाल करना चाहता हूँ
  • मौजूदा HN title “StyleTTS2 – open-source Eleven Labs quality Text To Speech” है, लेकिन original title में किसी specific product name को शामिल नहीं किया गया है और वहाँ link किए arXiv paper में भी ElevenLabs का ज़िक्र नहीं है
    मुझे लगा था कि इस तरह की title editing से बचा जाता है

    • ElevenLabs speech synthesis का benchmark है, और उससे बेहतर अभी कुछ नहीं है
      अगर कोई open source system उस quality के करीब पहुँचता है तो यह बहुत उल्लेखनीय है, और इसलिए ज़्यादातर लोग शायद comparison के लिए आभारी होंगे। सच कहूँ तो उसी comparison की वजह से मेरी रुचि बढ़ी
    • यह edited title है और exaggeration भी है। फिर भी StyleTTS2 को खुद इस्तेमाल करके देखने पर यह open source speech synthesis में निस्संदेह सबसे अच्छा है, इसलिए HN के top पर कुछ समय रहने का पूरा हकदार है
    • यह guideline violation ही है। title देखकर मुझे लगा था कि यह कोई नया research paper नहीं, बल्कि कोई arbitrary GitHub project है
  • जिन लोगों ने इसे successfully इस्तेमाल किया है, उनसे पूछना चाहूँगा: यह voice cloning XTTSv2 से भी बिल्कुल अलग है और ElevenLabs के तो और भी पास नहीं पहुँचती
    लगता है intonation की इसे खास परवाह नहीं है, और pitch व rhythm को काफी अच्छी तरह match करने भर की बात है
    alpha, beta, embedding scale, diffusion steps values को कई तरीकों से बदलकर देखा, लेकिन तेज़ होने और audio quality ठीक होने की बात मानते हुए भी voice cloning बिल्कुल ठीक से नहीं हुई

    • ElevenLabs Tortoise-TTS पर आधारित है और पहले से ही लाखों घंटों के data पर pre-trained है, जबकि यह model अधिक से अधिक 500 घंटे वाले LibriTTS पर ही trained है
      XTTS भी शायद 20 से ज़्यादा languages और लाखों speakers पर trained रहा होगा
      अगर उसने लाखों voices देखी हैं, तो उनमें आपके जैसी voice होना तय है; आखिरकार यह training data की समस्या है। हालांकि इतना बड़ा data इकट्ठा करके train कराना बेहद मुश्किल है
    • paper के conclusion section को देखें तो वह मानता है कि voice cloning अभी इतनी अच्छी नहीं है
    • मैंने भी alpha, beta के साथ बहुत experiments किए और कई audio clips upload किए, लेकिन यही result मिला
  • क्वालिटी सच में हैरान कर देने वाली अच्छी है, और 2000 के शुरुआती वर्षों में यह लगभग कल्पना से बाहर का स्तर था
    LLM किसी कैरेक्टर की भूमिका निभाए और इस तरह की voice synthesis NPCs को आवाज़ दे—गेम्स में इसकी दिलचस्प संभावनाएँ हैं

    • मेरी रुचि के क्षेत्र golf simulation में इसका बड़ा महत्व है
      अभी golf simulators में पक्षी चहचहाते हैं, घास हिलती है और gameplay realistic होता है, लेकिन एक भी इंसान नहीं होता, इसलिए थोड़ा post-apocalyptic माहौल रह जाता है
      असली round में मज़ाक-मज़ाक में होने वाली टांग-खिंचाई या बड़े match में दर्शकों की आवाज़ों से यह बहुत अलग है, इसलिए LLM-based chit-chat जोड़ने के लिए यह बिल्कुल सही लगता है
  • मैंने अभी Colab notebook आज़माई और quality बहुत अच्छी लगती है, और यह voice cloning भी support करता है

    • README सरसरी तौर पर देखा, लेकिन चलाने के लिए minimum hardware requirements क्या हैं, यह जानना चाहता हूँ। पता नहीं यह CPU या hard disk पर कहर तो नहीं ढा देगा
    • GitHub पर मोटे तौर पर देखा लेकिन नहीं मिला; यह जानना चाहता हूँ कि किसी खास voice पर fine-tuning करने में कितना समय लगता है
  • इसे आज़माना चाहता हूँ, लेकिन torch dependencies install करने के लिए हर बार venv बनाना अब थोड़ा उबाऊ हो गया है
    जानना चाहता हूँ कि बाकी लोग इसे कैसे handle करते हैं। क्या कई venv को एक common torch environment share करवाने का कोई आसान तरीका है? manually तो किया जा सकता है, लेकिन क्या इसके लिए कोई tool है?

    • Python environment setup के लिए nix इस्तेमाल करता हूँ; Python version और poetry, और कभी-कभी poetry से install करना मुश्किल packages fix करने के बाद बाकी सब poetry से handle करता हूँ
      workflow यह है: nix flake init -t github:dialohq/flake-templates#python, फिर nix develop -c $SHELL में enter करता हूँ, और nix development environment के shell hook में poetry install और poetry activate run करता हूँ
    • ऐसे मामलों में आम तौर पर Docker इस्तेमाल करने की कोशिश करता हूँ, लेकिन dependencies समझना इतना मुश्किल होता है कि ऐसे projects skip कर देने की यही मुख्य वजह भी बन जाती है
    • यही समस्या बहुत महसूस होती है। Docker development containers इस्तेमाल करके common dependencies के लिए base image बनाने और फिर हर नए project में Dockerfile से customize करने का तरीका सोचा था, लेकिन इससे बेहतर विकल्प है या नहीं, पता नहीं
    • मेरे साथ भी कुछ ऐसा ही है। conda इस्तेमाल कर रहा हूँ, और अब base conda environment में ही PyTorch install करने की दिशा में देख रहा हूँ
    • अगर यह सच में इतना उबाऊ होने लगा है, तो लगता है Copilot जैसे LLM को यह काम अपने आप संभालना आना चाहिए
  • सोच रहा हूँ कि text-to-speech models के लिए Civitai जैसा LoRA marketplace बनेगा या नहीं
    https://github.com/microsoft/LoRA