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.

Default EnglishCosyVoice3 8-bit

8-bit CosyVoice3 sinteză cu o sămânță fixă.

Clona vocalăaf_heart reference

CosyVoice3 clonarea din clonarea Kokoro af_heart de referință.

Instrucţiuni de stil --cosy-instruct

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

Ce Soniqo suportă

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:

  1. LLM bază de date Qwen2.5-0.5B generează jetoane de vorbire FSQ (Cantizare Scalară Finite) din text
  2. Se potrivesc fluxul diT Transformatorul de difuziune 22 transformă jetoanele de vorbire în spectrograme mel prin integrarea Euler ODE
  3. 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
Straturi24
Dimensiunea ascunsă896
Capete de interogare14
Capete cheie/valoare2 (GQA)
Vocabular FSQ6561
Cuantificarebf16 / 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
Straturi22
Dimensiune1024
Atenţie, cap.16
CondiționareAdalN (Norm de straturi adaptive)
Rezolvator ODEEuler, 10 paşi.
Rata CFG0.7

HiFi- GAN Vocoder

Un vocodor (NSF) de filtru sursă neurală care convertește spectrogramele mel în forme de undă.

Parametru Valoare
Armonie8
Raportul de eșantionare în sus480x (8 x 5 x 3 x ISTFT 4)
ISTFTn_fft=16, hop=4
Rata eșantionului de ieșire24 kHz

Greutatea modelului

VariantăLLMDiTDimensiuneHuggingFace
8bitint8, group=64bf16~1.4 GBaufklarer/CosyVoice3-0.5B-MLX-8bit
8bit-fullint8, group=64int8, group=64~1,6 GBaufklarer/CosyVoice3-0.5B-MLX-8bit-full
bf16bf16bf16~2.1 GBaufklarer/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ă

  1. CAM++ encodor difuzor extrage un 192-dim înglobare din audio de referință prin CoreML (Neural Engine)
  2. Proiecţie afină (192 → 80) condiţii de decodor de potrivire a fluxului DiT pe vocea ţintă
  3. HiFi-GAN vocoder convertește spectrograma mel condiționată de difuzor la audio 24kHz

Codor difuzorName

Proprietate Valoare
ModelCAM++ (Context-Aware Masking++)
Înglobarea192 dimensiuni
PlatformăCoreML (Neural Engine, FP16)
Dimensiune~14 MO
HuggingFaceaufklarer/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țiuneImplicit Descriere
--speakersMaparea speakerului: s1=file.wav,s2=file.wav
--turn-gap0.2Tăcerea dintre viraje (secunde)
--crossfade0.0Se 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 apelNeexpuse 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 amonteCombină --voice-sample cu --language german|spanish|chinese|.... Soniqo selectează aluziei lingvistice corecte de la steagul --language.
Dacă sunteți porting de la FunAudioLLM/CosyVoice

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-k25
Top- p0.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

EtapeLatitudine
LLM (compilat)~13 ms/token
Se potrivesc fluxul diT370 - 520 ms
HiFi- GAN50 - 170 ms
Compilație

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.