Tłumaczenie automatyczne · Oryginał angielski

CosyVoice3

Uruchom CosyVoice3 lokalnie na Mac za pomocą MLX do mówienia w dziewięciu językach i klonowania głosu z krótkiego nagrania. Posłuchaj domyślnych, klonowanych i sterowanych style- przykładów, a następnie spróbuj klonować za pomocą dźwięku odniesienia i jego dokładnego zapisu.

Próbki dźwięku · Klon głos z CLI · Obsługiwane języki · Pełne porównanie i metodologia klonowania głosu w pięciu językach

Próbki dźwięku

Słuchać istniejącego domyślnego głosu, klonu wykonanego z Kokoro af _ heart i sterowanego stylem przykładu. Przykład CLI poniżej używa oddzielnego odniesienia FLEURS.

Domyślny język angielskiCosyVoice3 8- bit

Synteza 8- bit CosyVoice3 ze stałym nasionkiem.

Klon głosuaf _ heart reference

Klonowanie CosyVoice3 z klipu odniesienia Kokoro af _ heart.

Instrukcja stylu--cosy-instruct

Jasny, podekscytowany dostawy za pomocą --cosy-instruct.

Klon głos z CLI

Pobieranie Dźwięk odniesienia jako reference.wav. Polecenie używa dokładnego transkryptu; zastępuje zarówno zapis, jak i transkrypcję przy użyciu własnej próbki głosu.

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 dostępność 3.5

Co obsługuje Soniqo

Przewodnik ten i Soniqo obsługują otwarte Fun-CosyVoice 3-0.5B (3.0) linii. oficjalne repozytorium open- source obecnie publikuje i dokumentuje 3.0 - w tym Fun-CosyVoice3-0.5B-2512- i nie ujawnia masy CosyVoice 3.5 lub kodu wnioskującego. cosyvoice-v3.5-plus nazwa jest Alibaba Cloud Model Studio API model ID, nie jest punktem kontrolnym do pobrania w tym repozytorium, więc Soniqo nie ubiega się o lokalne wsparcie 3.5.

Obsługiwane języki

JęzykKod
ChińskiChińczyk
Angielskiangielski
JapońskiJapończyk
KoreańskiKoreańczyk
Niemieckigerman
Hiszpańskihiszpański
FrancuskiFrancuski
WłoskiWłochy
RosyjskiRosja

Pipeline

CosyVoice3 syntetyzuje mowę w trzech etapach:

  1. LLM - Qwen2.5-0.5B kręgosłup generuje FSQ (Finite Scalar Quantization) żetony mowy z tekstu
  2. Dopasowywanie przepływomierza diT - A 22- warstwa dyfuzyjna transformator przekształca żetony mowy w spektrogramy mel poprzez integrację Euler ODE
  3. HiFi- GAN - Vocoder filtrujący źródła neuronowe przekształca spektrogramy mel w formy fal 24 kHz

Architektura

LLM (Qwen2.5-0.5B)

Bieżący runtime obsługuje bf16 (domyślnie), 8bit i 8bit- full. --cosyvoice-variant. Model językowy generuje dyskretne żetony mowy automatycznie.

ParametrWartość
Warstwy24
Ukryty wymiar896
Głowice zagajników14
Głowice klucza / wartości2 (GQA)
Słownictwo FSQ6561
Ilościowaniebf16 / 8- bit

Dopasowywanie przepływomierza diT

Transformator Diffusion przekształca żetony mowy w spektrogramy melowe przy użyciu warunkowego dopasowania przepływu z bezklatkowymi wskazówkami.

ParametrWartość
Warstwy22
Wymiar1024
Uwaga, głowy16
KondycjonowanieAdaLN (Adaptive Layer Norm)
Rozwiązanie ODEEuler, 10 kroków
Wskaźnik CFG0.7

HiFi- GAN Vocoder

Vocoder Neural Source Filter (NSF), który przekształca spektrogramy mel w formy falowe.

ParametrWartość
Harmonizacja8
Stosunek do próbki480x (8 x 5 x 3 x ISPTFT 4)
ISTFTn _ fft = 16, hop = 4
Szybkość próbkowania wyjściowego24 kHz

Wagi modelu

WariantLLMDiTRozmiarHuggingFace
8bitint8, grupa = 64bf16- 1,4 GBaufklarer / CosyVoice3-0.5B-MLX-8bit
8bit-fullint8, grupa = 64int8, grupa = 64- 1,6 GBaufklarer / CosyVoice3-0.5B-MLX-8bit-full
bf16bf16bf16~ 2,1 GBaufklarer / CosyVoice3-0.5B-MLX-bf16

Każdy pakiet zawiera dekoder LLM, dekoder do dopasowania diT, vokoder HiFi- GAN oraz enkoder odniesienia S3-Tokenizer potrzebny do klonowania zeroshot głosowego. Wybierz mniejsze pakiety dla mniejszego pobierania / śladu dysku; wybierz bf16 kiedy hałas kwantyfikacyjny LLM / DiT staje się problemem (synteza form długich, wierność klonowania głosu).

Zastosowanie 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

Przykłady

# 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

Klonowanie głosu

Klonować każdy głos z krótkiej próbki dźwięku odniesienia za pomocą --voice-sample flaga. CosyVoice3 wykorzystuje koder głośnika CAM + + do wyciągu osadzenia 192- dim, który warunkuje model przepływu 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

Jak to działa

  1. koder głośnika CAM + + wyciąg osadzenia 192- dim z dźwięku referencyjnego za pośrednictwem CoreML (Neural Engine)
  2. Projekcja afirmacji (192 → 80) warunki dekodera DiT pasującego do przepływu na głosie docelowym
  3. Vocoder HiFi- GAN konwertuje spektrogram melowy uwarunkowany głośnikiem na dźwięk 24kHz

Enkoder głośnika

WłasnośćWartość
WzórCAM + + (Context- Aware Masking + +)
Osadzanie192 wymiary
WsteczCoreML (Neural Engine, FP16)
Rozmiar14 MB
HuggingFaceaufklarer/CamPlusPlus-Speaker-CoreML

Model CAM + + jest pobierany automatycznie po pierwszym użyciu --voice-samplePatrz Klonowanie głosu Przewodnik dla referencyjnych końcówek audio i Swift API.

Dialog wielomówców

Synteza rozmów pomiędzy wieloma głośnikami przy użyciu tagów głośników inline. Każdy głośnik jest przypisany głos z pliku audio odniesienia za pośrednictwem --speakers Flaga.

# 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

Nazwy głośników w tagach są niewrażliwe na czynniki i dopasowane do klawiszy mapowania. Konfigurowalna luka milczenia (domyślna wartość 0.2s) jest wprowadzana pomiędzy obrotami.

OpcjaDomyślneOpis
--speakersMapowanie głośników: s1=file.wav,s2=file.wav
--turn-gap0.2Cisza między obrotami (sekundy)
--crossfade0.0Crossfade pokrywają się między obrotami (sekundy)

Emocje & amp; Styl Tagi

Sterowanie stylem mówienia na segment za pomocą inline znaczników emocji. CosyVoice3 używa przedrostka tekstu przed <|endofprompt|> token jako instrukcja stylu - emocje tags mapa do naturalnych instrukcji językowych, które zastępują ten przedrostek.

# 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

Built- in Emotion Tags

ZnacznikInstrukcja
happy / excitedMów szczęśliwie i z podnieceniem.
sadMów smutno melancholijnym tonem.
angryMów ze złością i intensywnością.
whispers / whisperingMów delikatnym szeptem.
laughs / laughingMów, śmiejąc się.
calmMów spokojnie i spokojnie.
surprisedMów z zaskoczeniem i zdumieniem.
seriousMów w poważnym, formalnym tonie.

Nieznane znaczniki przechodzą jako instrukcje freeform, więc (Speak in a slow, dramatic voice) działa jak... jest.

Tokeny do kontroli modelu (fl_ (Dz.U. L 328 z 7.12.2013, s. 1).

Wewnętrznie, CosyVoice3 LLM używa specjalnych żetonów sterujących - wstępnie ustawionych fl_ - przełączanie się pomiędzy trybami (zeroshot klonowanie, instrukcyjna synteza, zapisywanie głośnika itp.). Te żetony są częścią tokenizera FunAudioLLM; runtime Soniqo emituje poprawną, automatycznie opartą na fladze CLI lub Swift API, z którego korzystasz, więc nigdy nie pisz ich ręcznie.

Token kontrolnyTrybJak powołać się na Soniqo
<|fl_speaker_clone|>Klonowanie głosu zeroshot z wzorcowej próbki dźwiękuPass --voice-sample reference.wav na CLI, lub zestaw voiceSample: na Swift API.
<|fl_speaker_instruct|>Synteza zależna od wskazań lub stylów z domyślnym głosemPass --cosy-instruct "Speak cheerfully" lub użyć inline (happy) tag bez --voice-sample.
<|fl_speaker_instruct2|>Synteza instrukcji połączona z klonowanym głosem referencyjnymPołącz --voice-sample reference.wav z --cosy-instruct "..." (lub inline emocjonalny znacznik) w tym samym wywołaniu.
<|fl_save_speaker|>Persist głośnik osadzony do ponownego użycia bez kodowania dźwięku odniesienia każde połączenieNie bezpośrednio narażone w Soniqo CLI - wgniecenia są obliczane na każde połączenie. Do pamięci podręcznej, wyciągnąć 192- dim CAM + + wektor samodzielnie poprzez Oprawki do mówców Moduł i podaj do przodu.
<|fl_speaker_clone_zh|>, <|fl_speaker_clone_en|>, …Wskazówki dotyczące klonowania zerowego specyficzne dla języka stosowane przez zewnętrzny tokenizerPołącz --voice-sample z --language german|spanish|chinese|...Soniqo wybiera poprawną podpowiedź języka z --language Flaga.
Portalu z FunAudioLLM / CosyVoice

Tabela powyżej zawiera mapy dla każdego źródła fl_ token sterujący do odpowiednika Soniqo. Nigdy nie trzeba się dzielić fl_ żetony do swojego prompta - przekazać wysokiej klasy flagi CLI lub argumenty Swift API i runtime będzie emitować prawidłową sekwencję: klon → polecić → instruct2 → save _ speaker.

Kontrola wyrywkowa

Etap LLM wykorzystuje następującą konfigurację pobierania próbek:

ParametrWartość
Top- k25
Top- p0.8
Pobieranie próbek z powtarzającą się świadomościąWłączone (okno = 10, tau _ r = 0.1)

Powtórzenie Pobieranie próbek (RAS), z VALL- E 2, karze żetony, które pojawiły się w ostatnich 10 generowanych żetonów. Zapobiega to powtarzających się artefaktów audio i poprawia stabilność wyjściową.

Wydajność

Na M2 Max, CosyVoice3 osiąga RTF w przybliżeniu 0.5 - szybciej niż w czasie rzeczywistym.

EtapOpóźnienie
LLM (skompilowany)~ 13 ms / token
Dopasowywanie przepływomierza diT370 - 520 ms
HiFi- GAN50 - 170 ms
Kompilacja

Zaliczane warianty LLM (8- bit / 8-bit- full) compile(shapeless: true) dla pętli autoregresywnej, która eliminuje rekompilację nawierzchni na różnych długościach sekwencji. Odmiana bf16, która kompiluje - bezkształtny znacznik MLX- Swift nie może wywnioskować wyjściowy kształt matmul, które są gładkie Linear wykorzystuje - i uruchamia pętlę generacyjną z niecierpliwością. Batch- dualist CFG połówki liczby przejść DiT do przodu od 20 do 10 we wszystkich wariantach.