Sopro TTS: CPU पर चलने वाला, zero-shot voice cloning को सपोर्ट करने वाला 169M-पैरामीटर TTS मॉडल
(github.com/samuel-vitorino)- Sopro TTS एक अंग्रेज़ी-आधारित हल्का text-to-speech मॉडल है, जो zero-shot voice cloning और streaming generation को सपोर्ट करता है
- इसमें 169 मिलियन parameters हैं, और CPU पर 0.25 RTF की गति से 30 सेकंड ऑडियो लगभग 7.5 सेकंड में जनरेट करता है
- केवल 3~12 सेकंड लंबे reference audio से वक्ता की आवाज़ क्लोन की जा सकती है, और इसमें WaveNet-स्टाइल dilated conv और हल्का cross-attention आर्किटेक्चर इस्तेमाल किया गया है
- यह एकल L40S GPU पर प्रशिक्षित कम-बजट प्रोजेक्ट है, और डेटा क्वालिटी बेहतर होने पर प्रदर्शन और सुधर सकता है
- Streaming और non-streaming mode, CLI·Python API·web demo — सभी को सपोर्ट करता है, इसलिए डेवलपर प्रयोग और इंटीग्रेशन उपयोगिता अधिक है
Sopro TTS अवलोकन
- Sopro का पुर्तगाली में अर्थ ‘सांस’ है, और इसे हल्के अंग्रेज़ी TTS मॉडल के रूप में विकसित किया गया है
- Transformer की जगह dilated convolution और cross-attention को मिलाकर बना आर्किटेक्चर
- एकल L40S GPU पर प्रशिक्षित व्यक्तिगत प्रोजेक्ट
- मुख्य विशेषताएँ
- 169M parameters, streaming support, zero-shot voice cloning
- CPU पर 0.25 RTF से 30 सेकंड ऑडियो 7.5 सेकंड में जनरेट
- 3~12 सेकंड लंबे reference audio से voice cloning संभव
इंस्टॉलेशन और रन
- केवल न्यूनतम dependency versions निर्दिष्ट हैं, इसलिए अलग environment बनाए बिना इंस्टॉल किया जा सकता है
- उदाहरण:
torch==2.6.0version पर M3 CPU में लगभग 3 गुना प्रदर्शन सुधार
- उदाहरण:
- इंस्टॉल करने के तरीके
- PyPI:
pip install sopro - GitHub repository:
git cloneके बादpip install -e .
- PyPI:
उपयोग उदाहरण
- CLI रन उदाहरण
- text, reference audio, output file निर्दिष्ट किए जा सकते हैं
--style_strength,--no_stop_head,--stop_threshold,--stop_patienceजैसे विस्तृत control parameters उपलब्ध
- Python API उदाहरण
SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")से मॉडल लोड- non-streaming और streaming — दोनों तरीकों का समर्थन
- streaming mode में जनरेट हुए audio chunks को क्रमवार जोड़ा जा सकता है
इंटरैक्टिव streaming demo
- इंस्टॉल के बाद
uvicorn demo.server:appकमांड से लोकल सर्वर चलाएँ - या Docker से build और run किया जा सकता है
docker build -t sopro-demo .docker run --rm -p 8000:8000 sopro-demo
- ब्राउज़र में
http://localhost:8000खोलकर demo देखा जा सकता है
सावधानियाँ और सीमाएँ
- output consistency में कमी हो सकती है, इसलिए parameters समायोजित करने पड़ सकते हैं
- voice cloning quality माइक्रोफोन क्वालिटी और आसपास के शोर पर बहुत निर्भर करती है
- non-streaming version बेहतर ऑडियो क्वालिटी देता है
- generation length लगभग 32 सेकंड (400 frames) तक सीमित है; इससे अधिक होने पर hallucinatory output आ सकता है
- torchaudio इस्तेमाल करने पर ffmpeg आवश्यक है,
soundfileका उपयोग सुझाया गया है - training data pre-tokenized form में है, और स्टोरेज समस्या के कारण मूल ऑडियो हटा दिया गया
- आगे training code को सार्वजनिक करने और multilingual support बढ़ाने की योजना का उल्लेख है
training data
- Emilia YODAS, LibriTTS-R, Mozilla Common Voice 22, MLS datasets का उपयोग
संदर्भ और आधार तकनीक
- Mimi Codec (Kyutai), WaveNet, Attentive Stats Pooling, AudioLM, CSM आदि के शोध और codebase का उपयोग
1 टिप्पणियां
Hacker News की राय
यह एक शानदार और उपयोगी प्रोजेक्ट है
मेरी निजी राय में Chatterbox-TTS-Server सबसे अच्छा विकल्प है
इसकी स्पीड धीमी है, लेकिन ऑडियो क्वालिटी काफ़ी अच्छी है
यह मॉडल voice cloning और emotion vector के ज़रिए मैन्युअल emotion control कर सकता है, इसलिए यह बहुत ताकतवर टूल लगता है
यह अभी चल रहे model orchestration प्रोजेक्ट में खास तौर पर उपयोगी रहा
एक external emotion classification model, LLM के persona और TTS output दोनों को एक साथ कंट्रोल करके consistency बनाए रखता है
emotion state के हिसाब से ‘memory’ retrieval probability भी बदलती है, और IndexTTS2 जितना बारीक control देने वाला TTS बहुत कम है
GitHub वीडियो के आधार पर Sopro TTS की output बहुत खराब है और वास्तविक उपयोग लायक नहीं लगती
वहीं Chatterbox चौंकाने वाले नतीजे देता है
मेरा GPU RTX5090 है, और 1 सेकंड generate करने में लगभग 2 सेकंड runtime लगता है, जो काफ़ी तेज़ है
पहला उदाहरण और दूसरा उदाहरण देख सकते हैं। दूसरा, यूट्यूबर ArbitorIan की आवाज़ को clone करने वाला डेमो है
वाकई शानदार!
मैं लोकल में Kokoro (82M) इस्तेमाल कर रहा हूँ, यह तेज़ भी चलता है और ऑडियो क्वालिटी भी बेहतरीन है
मैं ricky0123/vad से voice activation संभाल रहा हूँ, फिर Web Speech API से तेज़ recognition करके commercial TTS इस्तेमाल कर रहा हूँ
अभी तक open source में कोई तेज़ विकल्प नहीं मिला
मैं सोच रहा था कि “zero-shot” का मतलब क्या है
few-shot में मॉडल को कुछ उदाहरण देकर guide किया जाता है, और multi-shot में कई prompts और revision steps शामिल होते हैं
यह बिना लंबे compilation के Mission Impossible स्तर की voice cloning करने जैसा लगता है
इससे जुड़ा YouTube वीडियो और शब्द-खेल वाली कविता भी साझा कर रहा हूँ
मैंने इसे अंग्रेज़ी में टेस्ट किया और काफ़ी प्रभावित हुआ
लो-बजट प्रोजेक्ट के हिसाब से नतीजे चौंकाने वाले थे, और इस्तेमाल करना भी बहुत आसान था
अगर इसका जर्मन वर्ज़न हो, तो मैं ज़रूर इस्तेमाल करना चाहूँगा
इसकी सीमाओं को देखते हुए नतीजे काफ़ी प्रभावशाली हैं
क्या इसका कोई और ताकतवर वर्ज़न जारी करने का प्लान है, जिसमें artifacts कम हों और ज़्यादा compute की ज़रूरत हो?
मैं ज़्यादातर Chatterbox इस्तेमाल करता हूँ, लेकिन अगर यह high quality तक पहुँचे तो एक अच्छा विकल्प बन सकता है
compute cost काफ़ी महँगी है, लेकिन अगर community response अच्छा रहा तो मैं इसे और विकसित करने का सोचूँगा
वैसे Chatterbox एक शानदार मॉडल है और प्रेरणा का स्रोत भी
मैं “zero-shot” का मतलब जानना चाहता था
यह Big O notation से भी ज़्यादा मनमाना है
यानी अगर मॉडल P(Audio|Voice) conditional probability सीखता है, और training में न देखी गई voice classes के लिए sample कर सकता है, तो वह zero-shot है
reference audio देना model weights बदलना नहीं, बल्कि context देना है
मैंने ऑडियो सुना और ऑडियो क्वालिटी इतनी भयानक लगी कि हैरान रह गया
यह 15 साल पुराने कंप्यूटर voice से भी खराब है, और लोग इसे अच्छा क्यों कह रहे हैं, समझ नहीं आता
मैंने कई browsers में टेस्ट किया, लेकिन नतीजा वही रहा
अगर यह इतना गंभीर है, तो शायद कोई और समस्या भी हो सकती है, इसलिए मैं साथ में देखना चाहूँगा
तकनीक वाकई शानदार है
आगे चलकर यह और बेहतर होगी
लेकिन फिलहाल के लिए भी खुरदुरेपन (razziness) को कम करने वाली कोई साधारण audio post-processing जोड़ दी जाए तो अच्छा होगा
क्या ऐसे मॉडलों में कोई speech-to-speech voice changer की तरह काम करने वाला भी है?
यानी एक fixed voice sample (prompt) और real-time input audio stream लेकर, input की आवाज़ को prompt के tone और timbre में बदल दे
V-tuber जैसे use case में prompt बार-बार बदलने की ज़रूरत नहीं होती, इसलिए एक बार के fine-tuning से fixed timbre लागू करना भी संभव लग सकता है
हालाँकि streaming processing आपको खुद implement करनी होगी
यह audio A (style) और B (content) को लेकर, A का timbre और B का उच्चारण·intonation जोड़ता है
ऐसे मॉडल को असल में “TTS” से ज़्यादा S+STS (speech+style to speech) कहना सही होगा
आधिकारिक ब्लॉग में इसका विस्तार से विवरण है
लेकिन मूल निर्माता और डेवलपर्स के बीच विवाद रहा है, इसलिए main fork से बचना और अंग्रेज़ी में maintain होने वाला नया fork ढूँढना बेहतर होगा