Traduzione automatica · Originale inglese

CosyVoice3

Correre CosyVoice3 localmente su Mac con MLX per la parola in nove lingue e clonazione vocale da una breve registrazione. Ascoltare gli esempi predefiniti, clonati e controllati dallo stile, quindi provare clonazione con l'audio di riferimento e la sua trascrizione esatta.

Campioni audio · Clone una voce con il CLI · Lingue supportate · Confronto e metodologia di clonazione vocale a cinque lingue

Campioni audio

Ascolti la voce predefinita esistente, il clone fatto da Kokoro af_heart, e l'esempio controllato dallo stile. L'esempio CLI qui sotto utilizza un riferimento FLEURS.

Predefinito ingleseCosyVoice3 8-bit

8-bit CosyVoice3 sintesi con seme fisso.

clone vocaleaf_heart riferimento

CosyVoice3 clonazione del Kokoro

Istruzioni di stile--cosy-instruct

Una consegna luminosa ed eccitata con --cosy-instruct.

Clone una voce con il CLI

Download Riferimento audio come riferimento.wav. Il comando utilizza la sua trascrizione esatta; sostituire sia la registrazione che la trascrizione quando si utilizza il proprio campione vocale.

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 disponibilità

Che cosa Soniqo

Questa guida e il runtime di Soniqo supportano l'apertura Fun-CosyVoice 3-0.5B (3.0) La linea. repository open source ufficiale attualmente pubblica e documenta 3.0, compresi Fun-CosyVoice3-0.5B-2512—e non espone i pesi CosyVoice 3.5 o il codice di inferenza. cosyvoice-v3.5-plus nome è un Alibaba Cloud Model Studio API modello ID, non un checkpoint scaricabile in quel repository, quindi Soniqo non rivendica il supporto 3.5 locale.

Lingue supportate

LinguaCodice
Cinesecinese
Ingleseinglese
GiapponeseGiapponese
CoreanoCoreano
Germaniatedesco
SpagnoloSpa
FranceseFrench
Italianoitaliano
RussoRussia

Pipeline

CosyVoice3 sintetizza il discorso in tre fasi:

  1. LLM — La spina dorsale Qwen2.5-0.5B genera token di discorso FSQ (Finite Scalar Quantization) dal testo
  2. DiT Flow Matching — Un trasformatore di diffusione a 22 strati converte i token di discorso in spettriogrammi mel tramite l'integrazione di Euler ODE
  3. HiFi-GAN — Il vocoder del filtro della sorgente neurale converte gli spettri mel in forme d'onda 24 kHz

Architettura

LLM (Qwen2.5-0.5B)

L'attuale runtime supporta bf16 (default), 8bit e 8bit-full. Selezionare un bundle con --cosyvoice-variant. Il modello di lingua genera token discografici in modo discreto.

ParametroValore
Datori di lavoro24
Dimensione nascosta896
Teste di query14
Teste chiave/valore2 (GQA)
Vocabolario FSQ6561
Quantificazionebf16 / 8 bit

Corrispondenza del flusso DiT

Il Diffusion Transformer perfeziona i token vocali in spettrogrammi mel utilizzando il flusso condizionale corrispondente alla guida senza classificatori.

ParametroValore
Datori di lavoro22
Dimensione1024
Attenzione:16
CondizionamentiAdaLN (Adaptive Layer Norm)
Risolvere ODEEuler, 10 passi
Tasso di CFG0.7

HiFi-GAN Vocoder

Un vocoder della sorgente neurale (NSF) che converte gli spettrogrammi mel in forme d'onda.

ParametroValore
Armoniche8
Rapporto di upsample480x (8 x 5 x 3 x ISTFT 4)
ISTFTTraduzione:16♪4
Tasso di campionamento in uscita24 kHz

Peso del modello

VarianteLLMDivertimentoDimensioneHuggingFace
8bitint8, gruppo=64bf16~1.4 GBaufklarer/CosyVoice3-0.5B-MLX-8bit
8bit-fullint8, gruppo=64int8, gruppo=64~ 1,6 GBaufklarer/CosyVoice3-0.5B-MLX-8bit-full
bf16bf16bf162,1 GBaufklarer/CosyVoice3-0.5B-MLX-bf16

Ogni bundle include il LLM, il decoder di scorrimento DiT, il vocoder HiFi-GAN, e l'encoder di riferimento S3-Tokenizer necessario per la clonazione vocale zero-shot. bf16 quando il rumore di quantizzazione LLM/DiT diventa un problema (sintesi di forma lunga, fedeltà di clonazione vocale).

Uso CLI

# 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

Esempi

# 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

Clonazione vocale

Clone qualsiasi voce da un breve campione audio di riferimento utilizzando la bandiera --voice-sample. CosyVoice3 utilizza l'encoder del diffusore CAM++ per estrarre un 192-dim che incorpora le condizioni del modello di flusso DiT.

# 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

Come funziona

  1. Encoder per diffusori CAM++ estrae un embedding 192-dim dall'audio di riferimento tramite CoreML (Neural Engine)
  2. Proiezione sufficiente (192 → 80) condiziona il decoder di corrispondenza del flusso DiT sulla voce di destinazione
  3. HiFi-GAN vocoder converte lo spettrogramma di mel climatizzato dell'altoparlante a 24kHz audio

Altoparlante Encoder

ProprietàValore
ModelloCAM++ (Context-Aware Masking++)
Embedding192 dimensioni
IndietroCoreML (Neural Engine, FP16)
Dimensione~ 14 MB
HuggingFaceaufklarer/CamPlusPlus-Speaker-CoreML

Il modello CAM++ viene scaricato automaticamente sul primo utilizzo di --voice-sample. Vedi la guida Voice Cloning per le punte audio di riferimento e la guida Swift API

Dialogo multi-Speaker

Sincronizza le conversazioni tra più diffusori utilizzando etichette di altoparlante in linea. Ciascun diffusore viene assegnata una voce da un file audio di riferimento tramite la bandiera --speakers

# 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

I nomi dei diffusori nei tag sono case-insensibili e abbinati ai tasti di mappatura. Un gap di silenzio configurabile (default 0.2s) viene inserito tra i giri.

OpzionePredefinitoDesignazione
--speakersMappatura del diffusore: s1=file.wav,s2=file.wav
--turn-gap0.2Silenzio tra le curve (secondi)
--crossfade0.0Si sovrapposizione tra curve (secondi)

Emozione & stile Tag

Controllare lo stile di parola per segmento utilizzando i tag di emozione in linea. CosyVoice3 utilizza il prefisso di testo prima del <|endofprompt|> token come istruzione di stile — tag di eliminazione mappa alle istruzioni di lingua naturale che sostituiscono questo prefisso.

# 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

Emozione integrata Tag

Tag:Istruzione
happy / excitedParlare felicemente e con eccitazione.
sadParla tristemente con un tono malinconico.
angryParla con rabbia e intensità.
whispers / whisperingParla con un sussurro morbido e gentile.
laughs / laughingParlate mentre ridete.
calmParlate con calma e tranquillità.
surprisedParla con sorpresa e stupore.
seriousParla in un tono serio e formale.

I tag sconosciuti passano come istruzioni di forma libera, così (Speak in a slow, dramatic voice)

Token di controllo del modello ( fl_ tokens)

Internamente, la CosyVoice3 LLM utilizza token di controllo speciali — prefissati fl_ — per passare tra modalità (clonazione zero-shot, sintesi istruita, salvataggio di un altoparlante, ecc.). Questi gettoni fanno parte del tokenizzatore FunAudioLLM a monte; il runtime Soniqo emette automaticamente quello corretto in base alla bandiera CLI o Swift API che usi, quindi non li scrivi mai a mano.

Token di controlloModalitàCome invocare da Soniqo
<|fl_speaker_clone|>clonazione vocale zero-shot da un campione audio di riferimentoPassaggio --voice-sample reference.wav sul CLI, o set voiceSample: sulla Swift API.
<|fl_speaker_instruct|>Istruzione- o sintesi di stile con una voce predefinitaPassaggio --cosy-instruct "Speak cheerfully" o utilizzare un inline (happy) tag senza tag --voice-sample.
<|fl_speaker_instruct2|>Sintesi dell'istruzione combinata con una voce di riferimento clonataCombinare --voice-sample reference.wav con --cosy-instruct "..."
<|fl_save_speaker|>Persistere l'integrazione di un altoparlante per il riutilizzo senza ri-codificare l'audio di riferimento ogni chiamataNon direttamente esposto nel Soniqo CLI — le incorporazioni sono calcolate per chiamata. Per la cache, estrarre il vettore CAM++ 192-dim tramite il modulo Speaker Embeddings e passarlo in avanti.
<|fl_speaker_clone_zh|>, <|fl_speaker_clone_en|>, …Appunti di clonazione a zero-shot specifici per la lingua utilizzati dal tokenizzatore a monteCombinare --voice-sample con --language german|spanish|chinese|.... Soniqo seleziona l'accenno di lingua corretto dalla bandiera --language.
Se stai portando da FunAudioLLM/CosyVoice

La tabella sopra mappa ogni a monte fl_ controllo token al suo equivalente Soniqo. Non è mai necessario complice fl_ gettoni nel vostro prompt voi stessi — passare le bandiere CLI di alto livello o Swift API argomenti e il runtime emetterà la sequenza corretta: clone → istruisce → instruct2 → save_speaker.

Sampling

La fase LLM utilizza la seguente configurazione di campionamento:

ParametroValore
Top-k25
Top-p0.8
Ripetizione Aware SamplingAbilitato (finestra=10, tau_r=0.1)

Ripetizione Aware Sampling (RAS), da VALL-E 2, penalizza i token che sono apparsi negli ultimi 10 token generati, impedendo artefatti audio ripetitivi e migliorando la stabilità di uscita.

Prestazioni

Su un M2 Max, CosyVoice3 raggiunge un RTF di circa 0,5 — più veloce del tempo reale.

FaseLattice
LLM (compilato)~13 ms/token
Corrispondenza del flusso DiT370 - 520 ms
HiFi-GAN50 - 170 ms
Raccolta

Le varianti LLM quantizzate (8-bit / 8 -bit-full) compile(shapeless: true) per il loop autoregressivo, che elimina la ricompilazione sopra la testa attraverso lunghezze di sequenza variabili. La variante bf16 salti che compilano — il tracer senza forma di MLX-Swift non può dedurre la forma di uscita del matmul bias-fuso che semplice Linear utilizza — e gestisce il ciclo di generazione con entusiasmo. Batch-doppiato CFG ha il numero di passi avanti DiT da 20 a 10 in tutte le varianti.