Maskinoversættelse · Engelsk original
CosyVoice3
Kør CosyVoice3 lokalt på Mac med MLX til tale i ni sprog og stemme kloning fra en kort optagelse. Lyt til standard, klonede og style- kontrollerede eksempler, så prøv kloning med reference lyd og dens nøjagtige udskrift.
Lydprøver · Klone en stemme med CLI · Understøttede sprog · Fuld 5-sprog stemme-kloning sammenligning og metodologi
Lydprøver
Lyt til den eksisterende standardstemme, klonen lavet af Kokoro af _ heart, og style- kontrolleret eksempel. CLI-eksemplet nedenfor bruger en separat FLEURS reference.
8- bit CosyVoice3 syntese med fast frø.
CosyVoice3 kloning fra Kokoro af _ heart reference clip.
En lys, ophidset levering ved hjælp af --cosy-instruct.
Klone en stemme med CLI
Download Referencelyd som reference.wav. Kommandoen bruger sin nøjagtige udskrift; erstatter både optagelsen og udskriften, når du bruger 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 vs 3.5 tilgængelighed
Denne guide og Soniqo 's runtime understøtter den åbne Fun-CosyVoice 3-0.5B (3.0) linje. officielt opensource-arkiv publicerer og dokumenter 3.0 - herunder Fun-CosyVoice3-0.5B-2512- og ikke udsætte CosyVoice 3.5 vægte eller inferens kode. cosyvoice-v3.5-plus navn er et Alibaba Cloud Model Studio API model ID, ikke et downloades checkpoint i dette lager, så Soniqo ikke kræver lokal 3.5 støtte.
Understøttede sprog
| Sprog | Kode |
|---|---|
| Kinesisk | kinesisk |
| Engelsk | DANISH |
| Japansk | japanese |
| Koreansk | koreansk |
| Tysk | german |
| Spansk | spansk |
| Fransk | fransk |
| Italiensk | italian |
| Russisk | russisk |
Pipeline
CosyVoice3 syntetiserer tale i tre faser:
- LLM - Qwen2.5-0.5B rygrad genererer FSQ (Finite Scalar Kvantisering) tale tokens fra tekst
- DiT- flow- matchning - Et 22- lag Diffusion Transformer konverterer talemønstre til mel spektrogram via Euler ODE integration
- HiFi- GAN - Neurale kilde Filter vocoder konverterer mel spektrogram til 24 kHz bølgeformer
Arkitektur
LLM (Qwen2.5-0.5B)
Den aktuelle drifttid understøtter bf16 (standard), 8bit og 8bit- full. Vælg et bundt med --cosyvoice-variantSprogmodellen genererer diskrete talemønstre autoregressivt.
| Parameter | Værdi |
|---|---|
| Lag | 24 |
| Skjult dimension | 896 |
| Pelshoveder | 14 |
| Nøgle / værdihoved | 2 (GQA) |
| FSQ- ordforråd | 6561 |
| Kvantificering | bf16 / 8- bit |
DiT- flow- matchning
Diffusion Transformer raffinerer talepoletter i mel spektrogram ved hjælp af betinget flow matchende med klassifikatorfri vejledning.
| Parameter | Værdi |
|---|---|
| Lag | 22 |
| Dimension | 1024 |
| Opmærksomhed hoveder | 16 |
| Konditionering | AdaLN (adaptive Layer Norm) |
| ODE-løser | Euler, 10 trin |
| CFG-sats | 0.7 |
HiFi- GAN Vocoder
Et neuralkildefilter (NSF) vocoder, der konverterer mel spektrogram til kurveformer.
| Parameter | Værdi |
|---|---|
| Harmoniske | 8 |
| Upsample ratio | 480x (8 x 5 x 3 x ISTFT 4) |
| ISTFT | n _ fft = 16, hop = 4 |
| Udtagningsprøvesats | 24 kHz |
Model Vægte
| 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 |
Hvert bundt omfatter LLM, DiT flow- matchende dekoder, HiFi- GAN vocoder, og S3-Tokenizer reference encoder nødvendig for zero-shot stemme kloning. Vælg mindre bundter til mindre download / disk fodaftryk; pick bf16 når LLM / DiT kvantificeringsstøj bliver et problem (længdesyntese, talekloning troskab).
CLI-brug
# 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 reference lydprøve ved hjælp af --voice-sample flag. CosyVoice3 bruger CAM + + højttaler encoder til at udtrække en 192- dim indlejring, der er under 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
Sådan virker det
- CAM + + højttaler encoder udtrækker en 192- dim-indlejring fra referencelyden via CoreML (Neural Engine)
- Affinprojicering (192 → 80) betingelser DiT flow matchende dekoder på målet stemme
- HiFi- GAN vocoder konverterer højttaler- konditioneret melspektrogram til 24kHz lyd
Speaker Encoder
| Ejendom | Værdi |
|---|---|
| Model | CAM + + (Context- Aware Masking + +) |
| Indlejring | 192 dimensioner |
| Backend | CoreML (Neural Engine, FP16) |
| Størrelse | ~ 14 MB |
| HuggingFace | aufklarer/CamPlusPlus-Speaker-CoreML |
CAM + + modellen downloades automatisk ved første brug af --voice-sample. Se Stemmekloning vejledning for referenceaudiospidser og Swift API.
Dialog mellem flere formænd
Synthesize samtaler mellem flere højttalere ved hjælp af inline højttaler tags. Hver højttaler tildeles en stemme fra en reference lydfil via --speakers flag.
# 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
Talsnavne i tags er sager- ufølsomme og matchede til kortlægningstasterne. Et konfigurerbart stilhed mellemrum (standard 0.2s) indsættes mellem drejninger.
| Valgmulighed | Standard | Varebeskrivelse |
|---|---|---|
--speakers | Højttalerkortlægning: s1=file.wav,s2=file.wav | |
--turn-gap | 0.2 | Stilhed mellem sving (sekunder) |
--crossfade | 0.0 | Crossfade overlap mellem sving (sekunder) |
Emotion & amp; - stiltags
Styre den talende stil per segment ved hjælp inline følelser tags. CosyVoice3 bruger teksten præfiks før <|endofprompt|> token som en stil instruktion - følelser tags kort til naturlige sprog instruktioner, der erstatter dette præfiks.
# 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
Bygge- i Følelsesmærker
| Mærke | Instruktion |
|---|---|
happy / excited | Tal lykkeligt og med spænding. |
sad | Tal sørgeligt med en melankolsk tone. |
angry | Tal med vrede og intensitet. |
whispers / whispering | Tal i en blød, blid hvisken. |
laughs / laughing | Tal, mens du griner. |
calm | Tal roligt og fredeligt. |
surprised | Tal med overraskelse og forundring. |
serious | Tal i en alvorlig, formel tone. |
Ukendt mærker passerer igennem som freeform instruktioner, så (Speak in a slow, dramatic voice) Det virker som...
Model til kontroltokens (fl_ tokens)
Internt bruger CosyVoice3 LLM specielle kontroltokens - præfikset fl_ - til at skifte mellem tilstande (zero- shot kloning, instrueret syntese, gemme en højttaler osv.). Disse tokens er en del af opstrøms FunAudioLLM Schedrizer; Soniqo runtime udsender den korrekte automatisk baseret på CLI flag eller Swift API opkald du bruger, så du aldrig skrive dem i hånden.
| Kontrolmærke | Tilstand | Hvordan man påberåber sig fra Soniqo |
|---|---|---|
<|fl_speaker_clone|> | Zero- shot voice kloning fra en reference audio prøve | Pass --voice-sample reference.wav på CLI eller indstillet voiceSample: på Swift API. |
<|fl_speaker_instruct|> | Instruktion- eller style- condition syntese med en standardstemme | Pass --cosy-instruct "Speak cheerfully" eller brug en inline (happy) tag uden --voice-sample. |
<|fl_speaker_instruct2|> | Instruktionssyntese kombineret med en klonet referencestemme | Kombinér --voice-sample reference.wav med --cosy-instruct "..." (eller et inline følelsesmærke) i samme kald. |
<|fl_save_speaker|> | Persist en højttalers indlejring til genbrug uden genkodning af reference lyd hvert opkald | Ikke direkte eksponeret i Soniqo CLI - indlejringer er beregnet pr. opkald. For at cache, udtrække 192- dim CAM + + vektor dig selv via Højttalerindlejringer modul og videregive det fremad. |
<|fl_speaker_clone_zh|>, <|fl_speaker_clone_en|>, … | Language- specifikke zero- shot kloning hints bruges af opstrøms-plurizer | Kombinér --voice-sample med --language german|spanish|chinese|.... Soniqo vælger det korrekte sprogvink fra --language flag. |
Tabellen ovenfor viser hver opstrøms fl_ kontrol token til sin Soniqo ækvivalent. Du behøver aldrig at splice fl_ tokens i din prompt dig selv - passere det høje niveau CLI flag eller Swift API argumenter og runtime vil udsende den korrekte sekvens: klon → instruerer → instruct2 → gem _ højttaler.
Stikprøveudtagning
LLM-stadiet anvender følgende prøvetagningskonfiguration:
| Parameter | Værdi |
|---|---|
| Top- k | 25 |
| Top- p | 0.8 |
| Gentagelse af Aware-prøvetagning | Aktiveret (vindue =10, tau _ r =0.1) |
Gentagelse Aware Sampling (RAS), fra VALL-E 2, straffer tokens, der dukkede op i de sidste 10 genererede tokens. Dette forhindrer gentagne lyd artefakter og forbedrer output stabilitet.
Præstation
På en M2 Max. CosyVoice3 opnår en RTF te 0.5 - hurtigere end realtid.
| Fase | LATEY |
|---|---|
| LLM (kompileret) | ~ 13 ms / token |
| DiT- flow- matchning | 370 - 520 ms |
| HiFi- GAN | 50 - 170 ms |
De kvantificerede LLM varianter (8- bit / 8-bit- full) brug compile(shapeless: true) for auto regressive løkke, som eliminerer omkompilering overhead på tværs af varierende sekvens længder. bf16 variant spring, der kompilerer - MLX- Swift 's formløse tracer kan ikke udlede output form af den bias- fusionerede matmul, der plain Linear bruger - og kører generationen loop ivrigt. Batch- fordoblet CFG halverer antallet af DiT fremad passerer fra 20 til 10 i alle varianter.
Qwen3-ASR speech- to- text · Parakeet TDT speech- to- text · Kokoro-82M TTS