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.
Synteza 8- bit CosyVoice3 ze stałym nasionkiem.
Klonowanie CosyVoice3 z klipu odniesienia Kokoro af _ heart.
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
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ęzyk | Kod |
|---|---|
| Chiński | Chińczyk |
| Angielski | angielski |
| Japoński | Japończyk |
| Koreański | Koreańczyk |
| Niemiecki | german |
| Hiszpański | hiszpański |
| Francuski | Francuski |
| Włoski | Włochy |
| Rosyjski | Rosja |
Pipeline
CosyVoice3 syntetyzuje mowę w trzech etapach:
- LLM - Qwen2.5-0.5B kręgosłup generuje FSQ (Finite Scalar Quantization) żetony mowy z tekstu
- Dopasowywanie przepływomierza diT - A 22- warstwa dyfuzyjna transformator przekształca żetony mowy w spektrogramy mel poprzez integrację Euler ODE
- 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.
| Parametr | Wartość |
|---|---|
| Warstwy | 24 |
| Ukryty wymiar | 896 |
| Głowice zagajników | 14 |
| Głowice klucza / wartości | 2 (GQA) |
| Słownictwo FSQ | 6561 |
| Ilościowanie | bf16 / 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.
| Parametr | Wartość |
|---|---|
| Warstwy | 22 |
| Wymiar | 1024 |
| Uwaga, głowy | 16 |
| Kondycjonowanie | AdaLN (Adaptive Layer Norm) |
| Rozwiązanie ODE | Euler, 10 kroków |
| Wskaźnik CFG | 0.7 |
HiFi- GAN Vocoder
Vocoder Neural Source Filter (NSF), który przekształca spektrogramy mel w formy falowe.
| Parametr | Wartość |
|---|---|
| Harmonizacja | 8 |
| Stosunek do próbki | 480x (8 x 5 x 3 x ISPTFT 4) |
| ISTFT | n _ fft = 16, hop = 4 |
| Szybkość próbkowania wyjściowego | 24 kHz |
Wagi modelu
| Wariant | LLM | DiT | Rozmiar | HuggingFace |
|---|---|---|---|---|
8bit | int8, grupa = 64 | bf16 | - 1,4 GB | aufklarer / CosyVoice3-0.5B-MLX-8bit |
8bit-full | int8, grupa = 64 | int8, grupa = 64 | - 1,6 GB | aufklarer / CosyVoice3-0.5B-MLX-8bit-full |
bf16 | bf16 | bf16 | ~ 2,1 GB | aufklarer / 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
- koder głośnika CAM + + wyciąg osadzenia 192- dim z dźwięku referencyjnego za pośrednictwem CoreML (Neural Engine)
- Projekcja afirmacji (192 → 80) warunki dekodera DiT pasującego do przepływu na głosie docelowym
- Vocoder HiFi- GAN konwertuje spektrogram melowy uwarunkowany głośnikiem na dźwięk 24kHz
Enkoder głośnika
| Własność | Wartość |
|---|---|
| Wzór | CAM + + (Context- Aware Masking + +) |
| Osadzanie | 192 wymiary |
| Wstecz | CoreML (Neural Engine, FP16) |
| Rozmiar | 14 MB |
| HuggingFace | aufklarer/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.
| Opcja | Domyślne | Opis |
|---|---|---|
--speakers | Mapowanie głośników: s1=file.wav,s2=file.wav | |
--turn-gap | 0.2 | Cisza między obrotami (sekundy) |
--crossfade | 0.0 | Crossfade 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
| Znacznik | Instrukcja |
|---|---|
happy / excited | Mów szczęśliwie i z podnieceniem. |
sad | Mów smutno melancholijnym tonem. |
angry | Mów ze złością i intensywnością. |
whispers / whispering | Mów delikatnym szeptem. |
laughs / laughing | Mów, śmiejąc się. |
calm | Mów spokojnie i spokojnie. |
surprised | Mów z zaskoczeniem i zdumieniem. |
serious | Mó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 kontrolny | Tryb | Jak powołać się na Soniqo |
|---|---|---|
<|fl_speaker_clone|> | Klonowanie głosu zeroshot z wzorcowej próbki dźwięku | Pass --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łosem | Pass --cosy-instruct "Speak cheerfully" lub użyć inline (happy) tag bez --voice-sample. |
<|fl_speaker_instruct2|> | Synteza instrukcji połączona z klonowanym głosem referencyjnym | Połą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łączenie | Nie 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 tokenizer | Połącz --voice-sample z --language german|spanish|chinese|...Soniqo wybiera poprawną podpowiedź języka z --language Flaga. |
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:
| Parametr | Wartość |
|---|---|
| Top- k | 25 |
| Top- p | 0.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.
| Etap | Opóźnienie |
|---|---|
| LLM (skompilowany) | ~ 13 ms / token |
| Dopasowywanie przepływomierza diT | 370 - 520 ms |
| HiFi- GAN | 50 - 170 ms |
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.
Qwen3-ASR przemówienie do tekstu · Parakeet TDT przemówienie do tekstu · Kokoro-82M TTS