Maskinoversettelse · Engelsk original

CosyVoice3

Kjør CosyVoice3 lokalt på Mac med MLX for tale på ni språk og stemmekloning fra et kort opptak. Lytt til standard, klonet og stilkontrollerte eksempler, og prøv deretter å klone med referanselyd og dens eksakte transkripsjon.

Lydprøver · Klone en stemme med CLI ·Supported languages · · Fyll femspråklig stemmekloning sammenlikning og metode

Lydprøver

Lyt til den eksisterende standardstemmen, klonen laget av Kokoro af_ heart, og det stilkontrollerte eksemplet. CLI eksemplet nedenfor bruker en separat FLEURS referanse.

Forvalgt engelskCosyVoice3 8-bit

8-bit CosyVoice3 syntese med et fast frø.

Vokseklonaf_hjertereferanse

CosyVoice3 kloning fra Kokoro af_heart referanseklipp.

Style instruksjon--cosy-instruct

En lys, spent levering ved hjelp av --cosy-instruct.

Klone en stemme med CLI

Last ned Reference audio som reference.wav. Kommandoen bruker sin nøyaktige transkripsjon; erstatte både opptak og transkripasjon når du bruker din egen stemmeprøve.

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 mot 3.5 tilgjengelighet

Hva Soniqo støtter

Denne guiden og Soniqo’s kjøretid støtter den åpne Fun-CosyVoice 3-0.5B (3.0) Linjen. Offisiell åpen kildekode-arkiv for tiden publiserer og dokumenterer 3.0 - inkludert Fun-CosyVoice3-0.5B-2512-og ikke avsløre CosyVoice 3.5 vekter eller inferenskode. cosyvoice-v3.5-plus Navnet er en Alibaba Cloud Model Studio API-modell-ID, ikke et nedlastbart sjekkpunkt i det lageret, så Soniqo ikke hevder lokal 3.5 støtte.

Støttede språk

SpråkKode
Kinesisk kinesisk
Engelsk engelsk
Japansk japansk
koreanskkoreansk
Tysk tysk
Spansk spansk
fransk fransk
Italiensk italiensk
russiske russisk

Pipeline

CosyVoice3 syntetiserer tale i tre stadier:

  1. LLM — Qwen2.5-0.5B ryggrad genererer FSQ (Finite Scalar Quantiization) taletegn fra tekst
  2. DiT Flow Matching - En 22-lags Diffusion Transformer konverterer talesymboler til mel spektrogrammer via Euler ODE integrasjon
  3. HiFi-GAN — Neural Source Filter vocoder konverterer mel spektrogram til 24 kHz bølgeformer

Arkitektur

LLM (Qwen2.5-0.5B)

Den aktuelle kjøretiden støtter bf16 (standard), 8bit og 8bit-full. Velg en pakke med --cosyvoice-variant. Språkmodellen genererer diskret taletokens automatisk.

Parameter Verdi
Lag24
Skjult dimensjon896
Forespørselshoder14
Nøkkel/verdihoder2 (GQA)
FSQ ordforråd6561
Kvantiseringbf16 / 8-biters

DiT Flow Matching

Diffusion Transformeren forfiner talesymboler i mel spektrogram ved å bruke betinget strømming som samsvarer med klassefri veiledning.

Parameter Verdi
Lag22
Dimensjon1024
Oppmerkningshoder16
BetingelseAdaLN (Adaptive Layer Norm)
ODE-løserEuler, 10 trinn
CFG-rate0.7

HiFi-GAN Vocoder

En nevral kildefilter (NSF) vocoder som konverterer mel spektrogrammer til bølgeformer.

Parameter Verdi
Harmonikk8
Oppsamlingsforhold480x (8 x 5 x 3 x ISTFT 4)
ISTFTn_fft=16, humle=4
Utgangsprøvehastighet24 kHz

Modellvekter

VariantLLMDiT StørrelseHuggingFace
8bitint8, gruppe=64bf16~1.4 GBaufklarer/CosyVoice3-0.5B-MLX-8bit
8bit-fullint8, gruppe=64int8, gruppe=64~1.6 GBaufklarer/CosyVoice3-0.5B-MLX-8bit-full
bf16bf16bf16~2.1 GBaufklarer/CosyVoice3-0.5B-MLX-bf16

Hver pakke inneholder LLM, DiT-strømmingsdekoderen, HiFi-GAN-vocoderen, og S3-Tokenizer referansekoderen som trengs for null-shot stemmekloning. Velg mindre pakker for mindre nedlasting / diskavtrykk; velg bf16 når LLM/DiT kvantiseringssstøy blir et problem (langforms syntese, stemmekloningsing fidelity).

CLI bruk

# 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

Eksempler

# 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

Stemmekloning

Klone enhver stemme fra en kort referanselydprøve ved bruk av --voice-sample flagg. CosyVoice3 bruker CAM++ høyttalerkoder for å trekke ut en 192-dim inneslutting som forholder DiT-strømmodellen.

# 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

Hvordan det fungerer

  1. CAM++ høyttalerkoder trekker ut en 192-dim embeddert fra referanselyden via CoreML (Neural Engine)
  2. Affin projeksjon (192 → 80) betingelser DiT strømming matchende dekoder på målstemmen
  3. HiFi-GAN vocoder konverterer høyttaler-kondisjonert mel spektrogram til 24kHz lyd

Høyttalerkoder

Eiendom Verdi
ModellCAM++ (Context-Aware Masking++)
Innbygging192 dimensjoner
MotorCoreML (Neural Engine, FP16)
Størrelse~14 MB
HuggingFaceaufklarer/CamPlusPlus-Speaker-CoreML

CAM++-modellen lastes ned automatisk ved første bruk av --voice-sample. Se Voice Cloning-guiden for referanselydtips og Swift API.

Dialog med flere talere

Synthesize samtaler mellom flere høyttalere ved hjelp av inline høyttaler tags. Hver høyttaler er tildelt en stemme fra en referanselydfil via --speakers flagget.

# 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

Høyttalernavn i tagger er case-insensitive og matches til kartleggingstastene. En konfigurerbar stillhet gap (standard 0,2s) settes inn mellom svinger.

MulighetStandard Beskrivelse
--speakers Høyttalerkartlegging: s1=file.wav,s2=file.wav
--turn-gap0.2Stillhet mellom svinger (sekunder)
--crossfade0.0Overlapping mellom svinger (sekunder)

Emosjon & Stil Tags

Kontrollere talestilen per segment ved å bruke inline følelsestagger. CosyVoice3 bruker tekstprefikset før <|endofprompt|> token som en stil instruksjon - følelser tagger kart til naturlige språkinstruksjoner som erstatter dette prefikset.

# 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

Innebygget emosjon Tags

TaggInstruksjoner
happy / excited Snakk lykkelig og med spenning.
sad Snakk trist med en melankolsk tone.
angry Snakk med sinne og intensitet.
whispers / whispering Snakk i en myk, mild hvisking.
laughs / laughing Snakk mens du ler.
calm Snakk rolig og fredelig.
surprised Snakk med overraskelse og forundring.
serious Snakk i en alvorlig, formell tone.

Ukjende tagger passerer som freeform instruksjoner, så (Speak in a slow, dramatic voice) fungerer som-er.

Modellkontroll Tokens (fl_ tokens)

Internt bruker CosyVoice3 LLM spesielle kontrollsymboler - prefiksert fl_ - til å bytte mellom moduser (null-shot kloning, instruert syntese, lagre en høyttaler, etc.). Disse symbolene er en del av oppstrøms FunAudioLLM-tokenizeren; Soniqo køyretiden sender ut den riktige automatisk basert på CLI-flagget eller Swift API ringe deg, så du aldri skriver dem for hånd.

Styretoken modus Hvordan påkalle fra Soniqo
<|fl_speaker_clone|>Nullshot stemmekloning fra en referanselydprøvePass --voice-sample reference.wav på CLI, eller sett voiceSample: på Swift API.
<|fl_speaker_instruct|>Instruksjons- eller stilkondisjonert syntese med standard stemmePass --cosy-instruct "Speak cheerfully" eller bruk en inline (happy) tag uten --voice-sample.
<|fl_speaker_instruct2|>Instruksjonsyntese kombinert med en klonet referansestemme Kombiner --voice-sample reference.wav med --cosy-instruct "..." (eller en inline følelseslapp) i samme samtale.
<|fl_save_speaker|> Vedta en høyttalers innbygging for ombruk uten å omkode referanselyden på nytt hver samtale Ikke direkte eksponert i Soniqo CLI - embeddinger er beregnet per anrop. For å cache, ekstraher 192-dim CAM++ vektoren selv via Speaker Innbygginger modulen og sende den videre.
<|fl_speaker_clone_zh|>, <|fl_speaker_clone_en|>, …Language-spesifikke null-shot kloning hint som brukes av oppstrøms tokenizer Kombiner --voice-sample med --language german|spanish|chinese|.... Soniqo velger riktig språkhint fra --language flagget.
Hvis du porterer fra FunAudioLLM/CosyVoice

Tabellen ovenfor kart hver oppstrøms fl_ kontrolltoken til sin Soniqo ekvivalent. Du trenger aldri å splice fl_ token inn i din spør selv - passer CLI-flaggene på høyt nivå eller Swift API argumentene og køyretiden vil avgi den riktige sekvensen: klon → instruksjon → instruct2 → are_speaker.

Sampling

LLM-trinnet bruker følgende prøvetakingskonfigurasjon:

Parameter Verdi
Top-k25
Top-p0.8
Repetisjonsvedvarende prøvetaking Aktivert (vindue=10, tau_r=0.1)

Repetisjons Aware-prøvetaking (RAS), fra VALL-E 2, straffer polletter som dukker opp i de siste 10 genererte token. Dette hindrer repetitive lydgjenstander og forbedrer utgangsstabiliteten.

Ytelse

På en M2 Max, CosyVoice3 oppnår en RTF på ca. 0,5 - raskere enn sanntid.

StageLatentens
LLM (kompilert)~13 ms/token
DiT Flow Matching370-520 ms
HiFi-GAN50- 170 ms
Kompilasjon

Den kvantiserte LLM varianter (8-bit / 8-bit-full) bruk compile(shapeless: true) for den autoregressive sløyfe, som eliminerer rekompilering over hele varierende sekvenslengder. bf16 varianten hopper over som kompilerer - MLX-Swifts formløse sporer kan ikke oppfatte utgangsformen til den forskjellige matmul som vanlig Linear bruker - og kjører generasjonsløyfe ivrig. Batch-dobbelt CFG halver antallet DiT passerer fra 20 til 10 i alle varianter.