Traducere automată · Originalul în engleză
CosyVoice3
Rulați CosyVoice3 local pe Mac cu MLX pentru vorbire în nouă limbi și clonarea vocală dintr-o înregistrare scurtă. Ascultați exemplele implicite, clonate și controlate în stil, apoi încercați clonarea cu audio de referință și transcrierea exactă a acestuia.
Mostre audio · Clone o voce cu CLI · Limbi acceptate · Comparație și metodologie de clonare vocală în cinci limbi
Mostre audio
Ascultați vocea implicită existentă, clona realizată din Kokoro af_heart și exemplul controlat de stil. Exemplul CLI de mai jos folosește o referință separată FLEURS.
8-bit CosyVoice3 sinteză cu o sămânță fixă.
CosyVoice3 clonarea din clonarea Kokoro af_heart de referință.
O livrare luminoasă, încântată, utilizând --cosy-instruct.
Clone o voce cu CLI
Descarca Reference audio as reference.wav. Comanda foloseste transcrierea exacta; inlocuieste atat inregistrarea cat si transcrierea cand folosesti propriul esantion vocal.
speech speak "Hello from the cloned voice." \
--engine cosyvoice \
--cosyvoice-variant bf16 \
--voice-sample reference.wav \
--cosy-reference-transcript "One can only wonder what the keyboard will become when something newer comes along." \
--seed 42 \
--output clone.wav
CosyVoice 3 vs 3.5 disponibilitate
Acest ghid și Soniqo lui runtime suport deschis Fun-CosyVoice 3-0.5B (3.0) Linia. depozit oficial cu sursă deschisă publică în prezent și documente 3.0 Fun-CosyVoice3-0.5B-2512Si nu expune CosyVoice 3.5 greutate sau cod de interferenta. cosyvoice-v3.5-plus Numele este un model de model Alibaba Cloud Model Studio API ID, nu un punct de control descărcabil în acel depozit, astfel încât Soniqo nu pretinde suport local 3.5.
Limbi acceptate
| Limba | Cod |
|---|---|
| Chineză | Chineză |
| Engleză | Engleză |
| Japoneză | japoneză |
| Coreeană | korean |
| Germană | germană |
| Spaniolă | spaniolă |
| Franceză | franceză |
| Italiană | italiană |
| Rusoaică | russiană |
Conductă
CosyVoice3 sintetizează discursul în trei etape:
- LLM bază de date Qwen2.5-0.5B generează jetoane de vorbire FSQ (Cantizare Scalară Finite) din text
- Se potrivesc fluxul diT Transformatorul de difuziune 22 transformă jetoanele de vorbire în spectrograme mel prin integrarea Euler ODE
- HiFi- GAN Vocodorul filtru sursă neural convertește spectrogramele mel în forme de undă 24 kHz
Arhitectură
LLM (Qwen2.5-0.5B)
Actualul runtime suportă bf16 (default), 8bit și 8bit-full. Selectați un pachet cu --cosyvoice-variant. Modelul lingvistic generează jetoane discrete de vorbire automat.
| Parametru | Valoare |
|---|---|
| Straturi | 24 |
| Dimensiunea ascunsă | 896 |
| Capete de interogare | 14 |
| Capete cheie/valoare | 2 (GQA) |
| Vocabular FSQ | 6561 |
| Cuantificare | bf16 / 8-bit |
Se potrivesc fluxul diT
Transformatorul de difuzie rafinează jetoanele de vorbire în spectrograme mel, utilizând un debit condiţionat care să se potrivească cu ghidarea fără clasificare.
| Parametru | Valoare |
|---|---|
| Straturi | 22 |
| Dimensiune | 1024 |
| Atenţie, cap. | 16 |
| Condiționare | AdalN (Norm de straturi adaptive) |
| Rezolvator ODE | Euler, 10 paşi. |
| Rata CFG | 0.7 |
HiFi- GAN Vocoder
Un vocodor (NSF) de filtru sursă neurală care convertește spectrogramele mel în forme de undă.
| Parametru | Valoare |
|---|---|
| Armonie | 8 |
| Raportul de eșantionare în sus | 480x (8 x 5 x 3 x ISTFT 4) |
| ISTFT | n_fft=16, hop=4 |
| Rata eșantionului de ieșire | 24 kHz |
Greutatea modelului
| Variantă | LLM | DiT | Dimensiune | HuggingFace |
|---|---|---|---|---|
8bit | int8, group=64 | bf16 | ~1.4 GB | aufklarer/CosyVoice3-0.5B-MLX-8bit |
8bit-full | int8, group=64 | int8, group=64 | ~1,6 GB | aufklarer/CosyVoice3-0.5B-MLX-8bit-full |
bf16 | bf16 | bf16 | ~2.1 GB | aufklarer/CosyVoice3-0.5B-MLX-bf16 |
Fiecare pachet include decodorul LLM, decodorul DiT de potrivire a fluxului, vocodorul HiFi-GAN și encodorul de referință S3-Tokenizer necesar pentru clonarea vocii cu foc zero. Alegeți pachete mai mici pentru descărcare mai mică / amprenta discului; alegeți bf16 atunci când zgomotul de cuantizare LLM/DiT devine o problemă (sinteză de lungă formă, fidelitate clonarea vocală).
Utilizarea CLI
# Default bf16 bundle
.build/release/speech speak "Hallo Welt" --engine cosyvoice --language german -o output.wav
# Pick a variant via --cosyvoice-variant
.build/release/speech speak "Hallo Welt" --engine cosyvoice --cosyvoice-variant bf16 --language german -o output.wav
Exemple
# English
.build/release/speech speak "Hello, how are you?" --engine cosyvoice -o hello_en.wav
# Chinese
.build/release/speech speak "你好世界" --engine cosyvoice --language chinese -o hello_cn.wav
# Spanish
.build/release/speech speak "Hola, buenos días" --engine cosyvoice --language spanish -o hello_es.wav
# French
.build/release/speech speak "Bonjour le monde" --engine cosyvoice --language french -o hello_fr.wav
Clonare vocală
Clone any voice from a short reference audio move using the --voice-sample flag. CosyVoice3 uses the CAM++ speaker encoder to extract a 192-dim incorporation that conditions the DiT flow model.
# Voice cloning
.build/release/speech speak "Hello in your voice" --engine cosyvoice --voice-sample reference.wav --cosy-reference-transcript "One can only wonder what the keyboard will become when something newer comes along." -o cloned.wav
# Cross-language: clone voice, speak in German
.build/release/speech speak "Guten Tag" --engine cosyvoice --voice-sample reference.wav --cosy-reference-transcript "One can only wonder what the keyboard will become when something newer comes along." --language german -o german.wav
Cum funcţionează
- CAM++ encodor difuzor extrage un 192-dim înglobare din audio de referință prin CoreML (Neural Engine)
- Proiecţie afină (192 → 80) condiţii de decodor de potrivire a fluxului DiT pe vocea ţintă
- HiFi-GAN vocoder convertește spectrograma mel condiționată de difuzor la audio 24kHz
Codor difuzorName
| Proprietate | Valoare |
|---|---|
| Model | CAM++ (Context-Aware Masking++) |
| Înglobarea | 192 dimensiuni |
| Platformă | CoreML (Neural Engine, FP16) |
| Dimensiune | ~14 MO |
| HuggingFace | aufklarer/CamPlusPlus-Speaker-CoreML |
Modelul CAM++ este descărcat automat la prima utilizare a --voice-sample Vezi... Clonarea vocală ghid pentru sfaturi audio de referință și Swift API.
Dialog multi-speaker
Sintetizeaza conversatiile intre mai multe difuzoare folosind tag-uri de difuzor Inline. Fiecare difuzor este atribuit o voce dintr-un fisier audio de referinta prin intermediul pavilionului --speakers.
# Two-speaker dialogue with voice cloning
.build/release/speech speak "[S1] Hello there! [S2] Hey, how are you?" \
--engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o dialogue.wav
# Three speakers
.build/release/speech 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
Numele vorbitorului din etichete sunt insensibile la caz și se potrivesc cu tastele de cartografiere. Se introduce între viraje un decalaj de tăcere configurabil (default 0,2s).
| Opțiune | Implicit | Descriere |
|---|---|---|
--speakers | Maparea speakerului: s1=file.wav,s2=file.wav | |
--turn-gap | 0.2 | Tăcerea dintre viraje (secunde) |
--crossfade | 0.0 | Se suprapune între viraje (secunde) |
Etichete emoție și stil
Controlați stilul vorbitoare pe segment folosind tag-uri emoționale inline. CosyVoice3 utilizează prefixul text înainte de <|endofprompt|>
# Emotion tags
.build/release/speech speak "(excited) Wow, amazing! (sad) But I have to go..." \
--engine cosyvoice -o emotion.wav
# Combined with speakers
.build/release/speech speak "[S1] (happy) Great news! [S2] (surprised) Really?" \
--engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o combined.wav
# Freeform instruction as tag
.build/release/speech speak "(Speak like a pirate) Ahoy matey!" \
--engine cosyvoice -o pirate.wav
# Global instruction (applies to all segments without emotion tags)
.build/release/speech speak "Hello world" \
--engine cosyvoice --cosy-instruct "Speak cheerfully" -o cheerful.wav
Tag-uri de emoție încorporate
| Tag | Instrucţiuni |
|---|---|
happy / excited | Vorbeste fericit si cu emotie. |
sad | Vorbeşte trist cu un ton melancolic. |
angry | Vorbeşte cu furie şi intensitate. |
whispers / whispering | Vorbeşte într-o şoaptă blândă. |
laughs / laughing | Vorbeşte în timp ce râzi. |
calm | Vorbeşte calm şi liniştit. |
surprised | Vorbeşte cu surpriză şi uimire. |
serious | Vorbeste pe un ton serios, formal. |
Etichetele necunoscute trec prin intermediul ca instrucțiuni de formă liberă, astfel încât (Speak in a slow, dramatic voice) funcționează ca-is.
Model de jetoane de control (fl_ jetoane)
Intern, CosyVoice3 LLM utilizează jetoane speciale de control fl_ Pentru a comuta între moduri (clonarea zero-shot, sinteza instruită, salvarea unui difuzor, etc.). Aceste jetoane sunt parte a jetoanelor FunAudioLLM în amonte; Soniqo runtime emite automat cel corect bazat pe steagul CLI sau Swift API Sună-te să le foloseşti, aşa că nu le scrii niciodată cu mâna.
| Token de control | Mod | Cum se invocă de la Soniqo |
|---|---|---|
<|fl_speaker_clone|> | Clonarea vocii cu zero focuri dintr-o mostră audio de referință | Pass --voice-sample reference.wav on the CLI, or set voiceSample: on the Swift API. |
<|fl_speaker_instruct|> | Sinteza condiţionată de instrucţiune sau stil cu o voce implicită | Pass --cosy-instruct "Speak cheerfully" sau utilizați o linie (happy) etichetă fără --voice-sample. |
<|fl_speaker_instruct2|> | Sinteza de instruire combinată cu o voce de referinţă clonată | Combinați --voice-sample reference.wav cu --cosy-instruct "..." (sau o etichetă de emoție în linie) în același apel. |
<|fl_save_speaker|> | Persistă inserarea unui difuzor pentru reutilizare fără a re-încorpora audio de referință fiecare apel | Neexpuse direct în Soniqo CLI bază sunt calculate pe apel. Pentru a cache, extrage 192-dim CAM++ vector te prin intermediul Emitere difuzor modul şi transmite-l înainte. |
<|fl_speaker_clone_zh|>, <|fl_speaker_clone_en|>, … | Indicii de clonare la zero specifice limbii utilizate de tokenizer-ul din amonte | Combină --voice-sample cu --language german|spanish|chinese|.... Soniqo selectează aluziei lingvistice corecte de la steagul --language. |
Tabelul de mai sus hărți fiecare în amonte fl_ token de control la echivalent Soniqo. Niciodată nu este nevoie să aplici fl_ jetoane în promptul tău. ? Dați-vă steagurile CL de nivel înalt sau Swift API argumente și timpul de funcționare va emite secvența corectă: clonă → instrucțiune → instruct2 → salva_speaker.
Eșantionarea
Etapa LLM utilizează următoarea configurație de eșantionare:
| Parametru | Valoare |
|---|---|
| Top-k | 25 |
| Top- p | 0.8 |
| Repetiție de eșantionare conștient | Activat (fereastra=10, tau_r=0,1) |
Repetition Aware Samplement (RAS), de la VALL-E 2, penalizeaza jetoane care au aparut in ultimele 10 jetoane generate. Acest lucru previne artefacte audio repetitive si imbunatateste stabilitatea de iesire.
Performanță
La un M2 Max, CosyVoice3 atinge un RTF de aproximativ 0,5
| Etape | Latitudine |
|---|---|
| LLM (compilat) | ~13 ms/token |
| Se potrivesc fluxul diT | 370 - 520 ms |
| HiFi- GAN | 50 - 170 ms |
Variantele LLM cuantizate (8-bit / 8 -bit-full) compile(shapeless: true) pentru bucla autoregresivă, care elimină recompilarea deasupra capului pe lungimi diferite de secvenţă. Varianta bf16 sare care se bazează pe trasorul fără formă al MLX-Swift nu poate deduce forma de ieşire a mattmulului care este pur Linear utilizează 20 la 10 în toate variantele.
Qwen3-ASR speech-to-text · Parakeet TDT speech-to-text · Kokoro-82M TTS