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.

Default EnglishCosyVoice3 8-bitars

8-bitars CosyVoice3 syntes med ett fast frö.

Voice cloneaf_heart referens

CosyVoice3 kloning från Kokoro af_heart referensklipp.

Style instruktion--kosinstruct

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

Vad Soniqo stöder

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åkKodkod
Kinesiska kinesiskakinesiska
Engelska engelska engelskaEngelska
Japansk Japansk Japan JapanskJapanska
KoreanskaKoreanen
Tyska tyskaTyska
Spanska spanskaSpanska
Franska franskaFranska
Italienska Italienitalian
Ryska ryska ryska ryska ryskaRyska

Pipeline

CosyVoice3 syntetiserar tal i tre steg:

  1. LLM -- Qwen2.5-0.5B ryggrad genererar FSQ (Finite Scalar Quantization) taltokens från text
  2. DiT Flow Matching - En 22-lagers Diffusion Transformer omvandlar taltokens till mel-spektrogram via Euler ODE-integration
  3. 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.

ParameterVärde
Layers24
Dold dimension896
Query Heads14
Nyckel/Value Heads2 (GQA)
FSQ vokabulär6561
Kvantiseringbf16 / 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.

ParameterVärde
Layers22
Dimension1024
Attention Heads16
VillkorAdaLN (Adaptive Layer Norm)
ODE-lösareEuler, 10 steg
CFG-ränta0.7

HiFi-GAN Vocoder

En Neural Source Filter (NSF) vocoder som konverterar mel spektrogram till vågformer.

ParameterVärde
Harmonics8
Upsample ratio480x (8 x 5 x 3 x ISTFT 4)
ISTFTn_fft=16, hop=4
Output sample rate24 kHz

Modellvikt

VariantLLMDiTStorlekHuggingFace
8bitint8, grupp=64bf16~1.4 GBaufklarer/CosyVoice3-0.5B-MLX-8bit
8bit-fullint8, grupp=64int8, grupp=64~1.6 GBaufklarer/CosyVoice3-0.5B-MLX-8bit-full
bf16bf16bf16~2.1 GBaufklarer/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

  1. CAM++-högtalare extraherar en 192-dim-inbäddning från referensljudet via CoreML (Neural Engine)
  2. Affin projektion (192 → 80) förhållanden DiT-flödet som matchar avkodaren på målrösten
  3. HiFi-GAN vocoder konverterar högtalarkonditionerade mel-spektrogram till 24kHz ljud

Högtalare Encoder

FastighetVärde
ModellCAM++ (Context-Aware Masking++)
Inbäddning192 dimensioner
BackendCoreML (Neural Engine, FP16)
Storlek~14 MB
HuggingFaceaufklarer/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.

AlternativStandardBeskrivning
--speakersHögtalarkartläggning: s1=file.wav,s2=file.wav
--turn-gap0.2Tystnad mellan turer (andar)
--crossfade0.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

TaggarInstruktion
happy / excitedTala lyckligt och med spänning.
sadTala tyvärr med en melankolisk ton.
angryTala med ilska och intensitet.
whispers / whisperingTala i en mjuk, mild viskning.
laughs / laughingTala medan du skrattar.
calmTala lugnt och fredligt.
surprisedTala med överraskning och förvåning.
seriousTala 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 tokenModeHur man åberopar från Soniqo
<|fl_speaker_clone|>Zero-shot röst kloning från ett referens ljudprovPass --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östPass --cosy-instruct "Speak cheerfully" eller använd en inline (happy) taggen utan --voice-sample.
<|fl_speaker_instruct2|>Instruktionssyntes kombinerad med en klonad referensröstKombinera --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 samtalInte 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 tokenizerKombinera --voice-sample med --language german|spanish|chinese|.... Soniqo väljer rätt språk antydan från --language flaggan.
Om du portar från FunAudioLLM/CosyVoice

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:

ParameterVärde
Top-k25
Top-p0.8
Repetition medveten om samplingEnabled (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.

StegLatency
LLM (kompilerad)~13 ms/token
DiT Flow Matching370 - 520 ms
HiFi-GAN50 - 170 ms
Sammanställning

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.