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.
8-bit CosyVoice3 syntese med et fast frø.
CosyVoice3 kloning fra Kokoro af_heart referanseklipp.
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
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åk | Kode |
|---|---|
| Kinesisk | kinesisk |
| Engelsk | engelsk |
| Japansk | japansk |
| koreansk | koreansk |
| Tysk | tysk |
| Spansk | spansk |
| fransk | fransk |
| Italiensk | italiensk |
| russiske | russisk |
Pipeline
CosyVoice3 syntetiserer tale i tre stadier:
- LLM — Qwen2.5-0.5B ryggrad genererer FSQ (Finite Scalar Quantiization) taletegn fra tekst
- DiT Flow Matching - En 22-lags Diffusion Transformer konverterer talesymboler til mel spektrogrammer via Euler ODE integrasjon
- 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 |
|---|---|
| Lag | 24 |
| Skjult dimensjon | 896 |
| Forespørselshoder | 14 |
| Nøkkel/verdihoder | 2 (GQA) |
| FSQ ordforråd | 6561 |
| Kvantisering | bf16 / 8-biters |
DiT Flow Matching
Diffusion Transformeren forfiner talesymboler i mel spektrogram ved å bruke betinget strømming som samsvarer med klassefri veiledning.
| Parameter | Verdi |
|---|---|
| Lag | 22 |
| Dimensjon | 1024 |
| Oppmerkningshoder | 16 |
| Betingelse | AdaLN (Adaptive Layer Norm) |
| ODE-løser | Euler, 10 trinn |
| CFG-rate | 0.7 |
HiFi-GAN Vocoder
En nevral kildefilter (NSF) vocoder som konverterer mel spektrogrammer til bølgeformer.
| Parameter | Verdi |
|---|---|
| Harmonikk | 8 |
| Oppsamlingsforhold | 480x (8 x 5 x 3 x ISTFT 4) |
| ISTFT | n_fft=16, humle=4 |
| Utgangsprøvehastighet | 24 kHz |
Modellvekter
| Variant | LLM | DiT | Størrelse | HuggingFace |
|---|---|---|---|---|
8bit | int8, gruppe=64 | bf16 | ~1.4 GB | aufklarer/CosyVoice3-0.5B-MLX-8bit |
8bit-full | int8, gruppe=64 | int8, gruppe=64 | ~1.6 GB | aufklarer/CosyVoice3-0.5B-MLX-8bit-full |
bf16 | bf16 | bf16 | ~2.1 GB | aufklarer/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
- CAM++ høyttalerkoder trekker ut en 192-dim embeddert fra referanselyden via CoreML (Neural Engine)
- Affin projeksjon (192 → 80) betingelser DiT strømming matchende dekoder på målstemmen
- HiFi-GAN vocoder konverterer høyttaler-kondisjonert mel spektrogram til 24kHz lyd
Høyttalerkoder
| Eiendom | Verdi |
|---|---|
| Modell | CAM++ (Context-Aware Masking++) |
| Innbygging | 192 dimensjoner |
| Motor | CoreML (Neural Engine, FP16) |
| Størrelse | ~14 MB |
| HuggingFace | aufklarer/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.
| Mulighet | Standard | Beskrivelse |
|---|---|---|
--speakers | Høyttalerkartlegging: s1=file.wav,s2=file.wav | |
--turn-gap | 0.2 | Stillhet mellom svinger (sekunder) |
--crossfade | 0.0 | Overlapping 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
| Tagg | Instruksjoner |
|---|---|
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øve | Pass --voice-sample reference.wav på CLI, eller sett voiceSample: på Swift API. |
<|fl_speaker_instruct|> | Instruksjons- eller stilkondisjonert syntese med standard stemme | Pass --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. |
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-k | 25 |
| Top-p | 0.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.
| Stage | Latentens |
|---|---|
| LLM (kompilert) | ~13 ms/token |
| DiT Flow Matching | 370-520 ms |
| HiFi-GAN | 50- 170 ms |
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.
Qwen3-ASR tale-til-tekst · Parakeet TDT tale-til -tekst ·Kokoro-82M TTS