Maskinöversättning · Engelskt original
CosyVoice3
Kör CosyVoice3 lokalt på Mac med MLX för tal på nio språk och röstkloning från en kort inspelning. Lyssna på standarden, klonade och stilkontrollerade exempel, försök sedan klona med referensljud och dess exakta utskrift.
Audio prover · Klon en röst med CLI · Stödda språk · Full femspråkig röstkloningsjämförelse och metodologi
Audio prover
Lyssna på den befintliga standardrösten, klonen gjord av Kokoro af_heart, och det stilstyrda exemplet. CLI-exemplet nedan använder en separat FLEURS referens.
8-bitars CosyVoice3 syntes med ett fast frö.
CosyVoice3 kloning från Kokoro af_heart referensklipp.
En ljus, upphetsad leverans med hjälp av --cosy-instruct.
Klon en röst med CLI
Ladda ner Reference ljud som referens.wav. kommandot använder sin exakta utskrift; ersätt både inspelningen och utskriften när du använder ditt eget röstprov.
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 tillgänglighet
Denna guide och Soniqo runtime stöder öppet Fun-CosyVoice 3-0.5B (3.0) linje. officiell open-source repository för närvarande publicerar och dokumenterar 3.0 – inklusive Fun-CosyVoice3-0.5B-2512-och inte exponerar CosyVoice 3.5 vikter eller slutsatskod. cosyvoice-v3.5-plus namn är ett Alibaba Cloud Model Studio API modell ID, inte en nedladdningsbar checkpoint i det lagret, så Soniqo inte hävdar lokal 3.5 stöd.
Stödda språk
| Språkspråk | Kodkod |
|---|---|
| Kinesiska kinesiska | kinesiska |
| Engelska engelska engelska | Engelska |
| Japansk Japansk Japan Japansk | Japanska |
| Koreanska | Koreanen |
| Tyska tyska | Tyska |
| Spanska spanska | Spanska |
| Franska franska | Franska |
| Italienska Italien | italian |
| Ryska ryska ryska ryska ryska | Ryska |
Pipeline
CosyVoice3 syntetiserar tal i tre steg:
- LLM -- Qwen2.5-0.5B ryggrad genererar FSQ (Finite Scalar Quantization) taltokens från text
- DiT Flow Matching - En 22-lagers Diffusion Transformer omvandlar taltokens till mel-spektrogram via Euler ODE-integration
- HiFi-GAN - Neural Source Filter Vocoder konverterar mel spektrogram till 24 kHz vågformer
Arkitektur
LLM (Qwen2.5-0.5B)
Den nuvarande runtime stöder bf16 (standard), 8bit och 8bit-full. Välj en bunt med --cosyvoice-variant. Språkmodellen genererar diskreta taltokens autoregressivt.
| Parameter | Värde |
|---|---|
| Layers | 24 |
| Dold dimension | 896 |
| Query Heads | 14 |
| Nyckel/Value Heads | 2 (GQA) |
| FSQ vokabulär | 6561 |
| Kvantisering | bf16 / 8-bit |
DiT Flow Matching
Diffusion Transformer förfinar tal tokens i mel spektrogram med hjälp av villkorligt flöde som matchar med klassificeringsfri vägledning.
| Parameter | Värde |
|---|---|
| Layers | 22 |
| Dimension | 1024 |
| Attention Heads | 16 |
| Villkor | AdaLN (Adaptive Layer Norm) |
| ODE-lösare | Euler, 10 steg |
| CFG-ränta | 0.7 |
HiFi-GAN Vocoder
En Neural Source Filter (NSF) vocoder som konverterar mel spektrogram till vågformer.
| Parameter | Värde |
|---|---|
| Harmonics | 8 |
| Upsample ratio | 480x (8 x 5 x 3 x ISTFT 4) |
| ISTFT | n_fft=16, hop=4 |
| Output sample rate | 24 kHz |
Modellvikt
| Variant | LLM | DiT | Storlek | HuggingFace |
|---|---|---|---|---|
8bit | int8, grupp=64 | bf16 | ~1.4 GB | aufklarer/CosyVoice3-0.5B-MLX-8bit |
8bit-full | int8, grupp=64 | int8, grupp=64 | ~1.6 GB | aufklarer/CosyVoice3-0.5B-MLX-8bit-full |
bf16 | bf16 | bf16 | ~2.1 GB | aufklarer/CosyVoice3-0.5B-MLX-bf16 |
Varje bunt innehåller LLM, DiT-flödesmatchningsdekoder, HiFi-GAN-vocoder, och S3-Tokenizer referenskodare som behövs för noll-shot röstkloning. Pick mindre buntar för mindre nedladdning / diskfotavtryck; plocka bf16 när LLM / DiT quantization noise blir ett problem (långsyntes,
CLI Användning
# 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
Exempel
# 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
Röstkloning
Klon alla röster från en kort referens ljudprov med hjälp av --voice-sample flaggan. CosyVoice3 använder CAM+ högtalaren för att extrahera en 192-dim inbäddning som villkor DiT flöde modell.
# 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
Hur det fungerar
- CAM++-högtalare extraherar en 192-dim-inbäddning från referensljudet via CoreML (Neural Engine)
- Affin projektion (192 → 80) förhållanden DiT-flödet som matchar avkodaren på målrösten
- HiFi-GAN vocoder konverterar högtalarkonditionerade mel-spektrogram till 24kHz ljud
Högtalare Encoder
| Fastighet | Värde |
|---|---|
| Modell | CAM++ (Context-Aware Masking++) |
| Inbäddning | 192 dimensioner |
| Backend | CoreML (Neural Engine, FP16) |
| Storlek | ~14 MB |
| HuggingFace | aufklarer/CamPlusPlus-Speaker-CoreML |
CAM++-modellen laddas ner automatiskt vid första användningen av --voice-sample. Se Voice Cloning guide för referensljudtips och Swift API.
Multihögtalardialog
Syntetisera konversationer mellan flera högtalare med hjälp av inline högtalartaggar. Varje högtalare tilldelas en röst från en referensljudfil via --speakers flaggan.
# 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ögtalare namn i taggar är fallskänsliga och matchade till kartläggningsnycklarna. En konfigurerbar tyst gap (standard 0.2s) sätts in mellan varv.
| Alternativ | Standard | Beskrivning |
|---|---|---|
--speakers | Högtalarkartläggning: s1=file.wav,s2=file.wav | |
--turn-gap | 0.2 | Tystnad mellan turer (andar) |
--crossfade | 0.0 | Överlappning mellan turer (sekunder) |
Emotion & Style Tags
Kontrollera talstilen per segment med hjälp av inline känslor taggar. CosyVoice3 använder textprefixet före <|endofprompt|> token som en stilinstruktion - känslor taggar karta till naturliga språkinstrukationer som ersätter detta prefix.
# 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
Inbyggd Emotion Taggar
| Taggar | Instruktion |
|---|---|
happy / excited | Tala lyckligt och med spänning. |
sad | Tala tyvärr med en melankolisk ton. |
angry | Tala med ilska och intensitet. |
whispers / whispering | Tala i en mjuk, mild viskning. |
laughs / laughing | Tala medan du skrattar. |
calm | Tala lugnt och fredligt. |
surprised | Tala med överraskning och förvåning. |
serious | Tala i en allvarlig, formell ton. |
Okända taggar passerar genom som friformsinstruktioner, så (Speak in a slow, dramatic voice) fungerar som-är.
Modellkontroll Tokens (fl_ tokens)
Internt använder CosyVoice3 LLM speciella kontrolltokens - prefixed fl_ - för att växla mellan lägen (noll-shot kloning, instruerad syntes, spara en högtalare, etc.). Dessa tokens är en del av den uppströms FunAudioLLM-tokenizer; Soniqo runtime avger den korrekta automatiskt baserat på CLI-flaggan eller Swift API ring du använder, så du aldrig skriva dem för hand.
| Kontroll token | Mode | Hur man åberopar från Soniqo |
|---|---|---|
<|fl_speaker_clone|> | Zero-shot röst kloning från ett referens ljudprov | Pass --voice-sample reference.wav på CLI, eller ställ in voiceSample: på Swift API. |
<|fl_speaker_instruct|> | Instruktion- eller stil-konditionerad syntes med en standardröst | Pass --cosy-instruct "Speak cheerfully" eller använd en inline (happy) taggen utan --voice-sample. |
<|fl_speaker_instruct2|> | Instruktionssyntes kombinerad med en klonad referensröst | Kombinera --voice-sample reference.wav med --cosy-instruct "..." (eller en inline känslor tag) i samma samtal. |
<|fl_save_speaker|> | Består en högtalares inbäddning för återanvändning utan att koda referensljudet varje samtal | Inte direkt utsatt i Soniqo CLI - inbäddningar beräknas per samtal. För att cache, extrahera 192-dim CAM++ vektor själv via Speaker Embeddings modulen och passera den framåt. |
<|fl_speaker_clone_zh|>, <|fl_speaker_clone_en|>, … | Språkspecifika noll-shot kloning tips som används av uppströms tokenizer | Kombinera --voice-sample med --language german|spanish|chinese|.... Soniqo väljer rätt språk antydan från --language flaggan. |
Tabellen ovan kartlägger varje uppströms fl_ kontrolltoken till dess Soniqo-ekvivalent. Du behöver aldrig krydda fl_ tokens in i din prompt själv - passera hög nivå CLI flaggor eller Swift API argument och runtime kommer att avge rätt sekvens: klon → instruera → instruct2 → spara_speaker.
Sampling
LLM scen använder följande provtagningskonfiguration:
| Parameter | Värde |
|---|---|
| Top-k | 25 |
| Top-p | 0.8 |
| Repetition medveten om sampling | Enabled (window=10, tau_r=0.1) |
Repetition Aware Sampling (RAS), från VALL-E 2, straffar tokens som dök upp i de senaste 10 genererade tokens. Detta förhindrar repetitiva ljudartefakter och förbättrar utgångsstabiliteten.
Prestanda
På en M2 Max uppnår CosyVoice3 en RTF på cirka 0,5 - snabbare än realtid.
| Steg | Latency |
|---|---|
| LLM (kompilerad) | ~13 ms/token |
| DiT Flow Matching | 370 - 520 ms |
| HiFi-GAN | 50 - 170 ms |
De kvantiserade LLM varianterna (8-bit / 8 -full) användning compile(shapeless: true) för den autoregressiva slingan, som eliminerar rekompilering över huvudet över olika sekvenslängder. bf16 variant hoppar som sammanställer - MLX-Swifts formlösa spårare kan inte dra slutsatsen formen av den bias-fuserade matmulen som slätten Linear använder - och kör generations loop ivrigt. Batch-dubblad CFG halverar antalet DiT framåt passerar från 20 till 10 i alla varianter.
Qwen3-ASR tal-till-text Parakeet TDT tal-to-text · Kokoro-82M TTS