CosyVoice3

Fun-CosyVoice3-0.5B एक 9-भाषा स्ट्रीमिंग टेक्स्ट-टू-स्पीच मॉडल है। यह टेक्स्ट इनपुट से प्राकृतिक 24 kHz स्पीच उत्पन्न करने के लिए तीन-चरण पाइपलाइन — LLM टोकन जेनरेशन, DiT flow matching, और HiFi-GAN vocoding — का उपयोग करता है।

समर्थित भाषाएँ

भाषाकोड
चीनीchinese
अंग्रेज़ीenglish
जापानीjapanese
कोरियाईkorean
जर्मनgerman
स्पेनिशspanish
फ़्रेंचfrench
इतालवीitalian
रूसीrussian

पाइपलाइन

CosyVoice3 तीन चरणों में स्पीच सिंथेसाइज़ करता है:

  1. LLM — Qwen2.5-0.5B बैकबोन टेक्स्ट से FSQ (Finite Scalar Quantization) स्पीच टोकन जेनरेट करता है
  2. DiT Flow Matching — एक 22-लेयर Diffusion Transformer Euler ODE इंटीग्रेशन के माध्यम से स्पीच टोकन को mel spectrograms में बदलता है
  3. HiFi-GAN — Neural Source Filter vocoder mel spectrograms को 24 kHz वेवफ़ॉर्म में बदलता है

आर्किटेक्चर

LLM (Qwen2.5-0.5B)

भाषा मॉडल 4-bit क्वांटाइज़्ड है और ऑटोरिग्रेसिव रूप से डिस्क्रीट स्पीच टोकन जेनरेट करता है।

पैरामीटरमान
लेयर24
Hidden dimension896
Query heads14
Key/Value heads2 (GQA)
FSQ शब्दावली6561
क्वांटिज़ेशन4-bit

DiT Flow Matching

Diffusion Transformer classifier-free guidance के साथ conditional flow matching का उपयोग करके स्पीच टोकन को mel spectrograms में परिष्कृत करता है।

पैरामीटरमान
लेयर22
Dimension1024
Attention heads16
ConditioningAdaLN (Adaptive Layer Norm)
ODE solverEuler, 10 steps
CFG rate0.7

HiFi-GAN Vocoder

एक Neural Source Filter (NSF) vocoder जो mel spectrograms को वेवफ़ॉर्म में बदलता है।

पैरामीटरमान
Harmonics8
Upsample ratio480x (8 x 5 x 3 x ISTFT 4)
ISTFTn_fft=16, hop=4
आउटपुट सैंपल रेट24 kHz

मॉडल वेट

मॉडलआकारHuggingFace
CosyVoice3-0.5B (4-bit LLM)1.2 GBaufklarer/CosyVoice3-0.5B-MLX-4bit

LLM (4-bit क्वांटाइज़्ड), DiT flow matching, और HiFi-GAN vocoder वेट शामिल हैं।

CLI उपयोग

.build/release/audio speak "Hallo Welt" --engine cosyvoice --language german -o output.wav

उदाहरण

# अंग्रेज़ी
.build/release/audio speak "Hello, how are you?" --engine cosyvoice -o hello_en.wav

# चीनी
.build/release/audio speak "你好世界" --engine cosyvoice --language chinese -o hello_cn.wav

# स्पेनिश
.build/release/audio speak "Hola, buenos días" --engine cosyvoice --language spanish -o hello_es.wav

# फ़्रेंच
.build/release/audio speak "Bonjour le monde" --engine cosyvoice --language french -o hello_fr.wav

वॉयस क्लोनिंग

--voice-sample फ़्लैग का उपयोग करके एक छोटे संदर्भ ऑडियो सैंपल से किसी भी वॉयस को क्लोन करें। CosyVoice3 एक 192-dim एम्बेडिंग निकालने के लिए CAM++ स्पीकर encoder का उपयोग करता है जो DiT flow मॉडल को conditioning करता है।

# वॉयस क्लोनिंग
.build/release/audio speak "Hello in your voice" --engine cosyvoice --voice-sample reference.wav -o cloned.wav

# क्रॉस-लैंग्वेज: वॉयस क्लोन करें, जर्मन में बोलें
.build/release/audio speak "Guten Tag" --engine cosyvoice --voice-sample reference.wav --language german -o german.wav

यह कैसे काम करता है

  1. CAM++ स्पीकर encoder CoreML (Neural Engine) के माध्यम से संदर्भ ऑडियो से 192-dim एम्बेडिंग निकालता है
  2. Affine projection (192 → 80) DiT flow matching decoder को लक्ष्य वॉयस पर conditioning करता है
  3. HiFi-GAN vocoder स्पीकर-conditioned mel spectrogram को 24kHz ऑडियो में बदलता है

स्पीकर Encoder

गुणमान
मॉडलCAM++ (Context-Aware Masking++)
एम्बेडिंग192 dimensions
बैकएंडCoreML (Neural Engine, FP16)
आकार~14 MB
HuggingFaceaufklarer/CamPlusPlus-Speaker-CoreML

CAM++ मॉडल --voice-sample के पहले उपयोग पर स्वचालित रूप से डाउनलोड होता है। संदर्भ ऑडियो टिप्स और Swift API के लिए वॉयस क्लोनिंग गाइड देखें।

मल्टी-स्पीकर डायलॉग

इनलाइन स्पीकर टैग का उपयोग करके कई स्पीकरों के बीच वार्तालाप सिंथेसाइज़ करें। प्रत्येक स्पीकर को --speakers फ़्लैग के माध्यम से एक संदर्भ ऑडियो फ़ाइल से एक वॉयस सौंपी जाती है।

# वॉयस क्लोनिंग के साथ दो-स्पीकर डायलॉग
.build/release/audio speak "[S1] Hello there! [S2] Hey, how are you?" \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o dialogue.wav

# तीन स्पीकर
.build/release/audio speak "[A] Welcome. [B] Thanks! [C] Glad to be here." \
    --engine cosyvoice --speakers a=host.wav,b=guest1.wav,c=guest2.wav -o panel.wav

टैग में स्पीकर नाम केस-असंवेदनशील हैं और मैपिंग की से मिलाए जाते हैं। टर्न के बीच एक कॉन्फ़िगर करने योग्य silence gap (डिफ़ॉल्ट 0.2s) डाला जाता है।

विकल्पडिफ़ॉल्टविवरण
--speakersस्पीकर मैपिंग: s1=file.wav,s2=file.wav
--turn-gap0.2टर्न के बीच silence (सेकंड)
--crossfade0.0टर्न के बीच crossfade overlap (सेकंड)

इमोशन और स्टाइल टैग

इनलाइन इमोशन टैग का उपयोग करके प्रति सेगमेंट बोलने की स्टाइल नियंत्रित करें। CosyVoice3 <|endofprompt|> टोकन से पहले टेक्स्ट प्रीफ़िक्स को एक स्टाइल इंस्ट्रक्शन के रूप में उपयोग करता है — इमोशन टैग प्राकृतिक भाषा निर्देशों से मैप होते हैं जो इस प्रीफ़िक्स को प्रतिस्थापित करते हैं।

# इमोशन टैग
.build/release/audio speak "(excited) Wow, amazing! (sad) But I have to go..." \
    --engine cosyvoice -o emotion.wav

# स्पीकरों के साथ संयुक्त
.build/release/audio speak "[S1] (happy) Great news! [S2] (surprised) Really?" \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o combined.wav

# टैग के रूप में फ़्रीफ़ॉर्म निर्देश
.build/release/audio speak "(Speak like a pirate) Ahoy matey!" \
    --engine cosyvoice -o pirate.wav

# ग्लोबल निर्देश (बिना इमोशन टैग वाले सभी सेगमेंट पर लागू)
.build/release/audio speak "Hello world" \
    --engine cosyvoice --cosy-instruct "Speak cheerfully" -o cheerful.wav

बिल्ट-इन इमोशन टैग

टैगनिर्देश
happy / excitedखुशी और उत्साह से बोलें।
sadउदास, उदासीन स्वर में बोलें।
angryक्रोध और तीव्रता से बोलें।
whispers / whisperingनरम, कोमल फुसफुसाहट में बोलें।
laughs / laughingहँसते हुए बोलें।
calmशांति और आराम से बोलें।
surprisedआश्चर्य और विस्मय से बोलें।
seriousगंभीर, औपचारिक स्वर में बोलें।

अज्ञात टैग फ़्रीफ़ॉर्म निर्देशों के रूप में पास होते हैं, इसलिए (Speak in a slow, dramatic voice) जैसा काम करता है।

सैंपलिंग

LLM चरण निम्नलिखित सैंपलिंग कॉन्फ़िगरेशन का उपयोग करता है:

पैरामीटरमान
Top-k25
Top-p0.8
Repetition Aware Samplingसक्षम (window=10, tau_r=0.1)

Repetition Aware Sampling (RAS), VALL-E 2 से, उन टोकनों को दंडित करता है जो अंतिम 10 जेनरेट किए गए टोकनों में दिखाई दिए। यह दोहराए जाने वाले ऑडियो आर्टिफ़ैक्ट्स को रोकता है और आउटपुट स्थिरता में सुधार करता है।

प्रदर्शन

M2 Max पर, CosyVoice3 लगभग 0.5 का RTF प्राप्त करता है — रियल-टाइम से तेज़।

चरणलेटेंसी
LLM (compiled)~13 ms/token
DiT Flow Matching370 - 520 ms
HiFi-GAN50 - 170 ms
Compilation

LLM चरण ऑटोरिग्रेसिव लूप के लिए compile(shapeless: true) का उपयोग करता है, जो विभिन्न अनुक्रम लंबाई पर recompilation ओवरहेड को समाप्त करता है। Batch-doubled CFG DiT forward passes की संख्या को 20 से 10 तक आधा कर देता है।