Terjemahan mesin · Versi asli bahasa Inggris
CosyVoice3
Jalankan CosyVoice3 lokal di Mac dengan MLX untuk pidato dalam sembilan bahasa dan suara cloning dari rekaman pendek. Dengarkan baku, kloning dan gaya-terkontrol contoh, kemudian coba kloning dengan referensi audio dan transkrip yang tepat.
Sampel audio · Kloning a voice with the CLI · Bahasa yang didukung · Suara lima bahasa penuh - kloning perbandingan dan metodologi
Sampel audio
Dengarkan suara bawaan yang ada, klon yang dibuat dari Kokoro ahl _ heart, dan contoh style-controlled. Contoh CLI di bawah ini menggunakan sebuah terpisah FLEURS referensi.
8-bit CosyVoice3 sintesis dengan benih tetap.
CosyVoice3 kloning dari Kokoro af _ heart reference clip.
Kiriman, pengiriman bersemangat menggunakan --cosy-instruct.
Kloning a voice with the CLI
Unduh Referensi audio sebagai reference.wav Perintah menggunakan transkrip yang tepat; mengganti baik rekaman dan transkrip ketika menggunakan sampel suara Anda sendiri.
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 ketersediaan 3.5
Pemandu ini dan Soniqo 's landasan dukungan terbuka Fun-CosyVoice 3-0.5B (3.0) Garis. repositori open-source resmi saat ini menerbitkan dan dokumen 3.0 - termasuk Fun-CosyVoice3-0.5B-2512- dan tidak mengekspos CosyVoice 3.5 bobot atau kode inferensi. cosyvoice-v3.5-plus nama adalah sebuah ID model Alibaba Cloud Model API, bukan sebuah pos pemeriksaan yang dapat diunduh di dalam repositori tersebut, jadi Soniqo tidak mengklaim dukungan lokal 3.5.
Bahasa Yang Didukung
| Bahasa | Kode |
|---|---|
| Cina | Cina |
| Inggris | Inggris |
| Jepang | Jepang |
| Korea | korea |
| Jerman | Jerman |
| Spanyol | SPANYOL |
| Perancis | Perancis |
| Italia | Italia |
| Rusia | Rusia |
Baris pipa
CosyVoice3 mensintesis pidato dalam tiga tahap:
- LLM - Qwen2.5-0.5B tulang punggung menghasilkan FSQ (Finite Scalar Quantization) token suara dari teks
- Flow DiT Cocok - A 22-layer Diffusion Transformer konversi token bicara ke spektrogram mel melalui integrasi Euler ODE
- HiFi- GAN - Penyaring Sumber Neural vocoder mengkonversi spektrogram mel ke dalam bentuk gelombang 24 kHz
Arsitektur
LLM (Qwen2.5-0.5B)
Dukungan waktu-jalan saat ini bf16 (bawaan), 8bit dan 8bit- full. Pilih sebuah bundle dengan --cosyvoice-variantModel bahasa menghasilkan token pidato diskrit secara autoregreatly.
| Parameter | Nilai |
|---|---|
| Lapisan | 24 |
| Dimensi Tersembunyi | 896 |
| Kepala kuiri | 14 |
| Kepala kunci / Nilai | 2 (GQA) |
| kosakata FSQ | 6561 |
| Kuantisasi | bf16 / 8- bit |
Flow DiT Cocok
The Difusi Transformer membersihkan token bicara menjadi spektrogram mel menggunakan aliran kondisional pencocokan dengan bimbingan bebas klasifikasi.
| Parameter | Nilai |
|---|---|
| Lapisan | 22 |
| Dimensi | 1024 |
| Perhatian kepala | 16 |
| Mengkondiasi | AdaLN (Norm Lapis Adaptif) |
| Penyelenggara ODE | Euler, 10 langkah |
| Laju CFG | 0.7 |
Vocoder HiFi- GAN
Sebuah penyaring Sumber Neural (NSF) vocoder yang mengubah spektrogram mel menjadi gelombang.
| Parameter | Nilai |
|---|---|
| Harmonik | 8 |
| Rasio contoh | 480x (8 x 5 x 3 x SISTFT 4) |
| SISTFT | n _ fft = 16, hop = 4 |
| Laju cuplikan keluaran | 24 kHz |
Model Weights
| Varian | LLM | DiT | Ukuran | HuggingFace |
|---|---|---|---|---|
8bit | int8, grup = 64 | bf16 | ~ 1.4 GB | aufklarer / CosyVoice3-0.5B-MLX-8bit |
8bit-full | int8, grup = 64 | int8, grup = 64 | ~ 1.6 GB | aufklarer / CosyVoice3-0.5B-MLX-8bit-full |
bf16 | bf16 | bf16 | ~ 2.1 GB | aufklarer / CosyVoice3-0.5B-MLX-bf16 |
Setiap bundel meliputi LLM, flow- yang cocok dengan decoder, vocoder HiFi- GAN, dan enkoder referensi S3-Tokenizer yang diperlukan untuk zero- tembakan cloning suara. Pilih bundel kecil untuk download / disk footes lebih kecil; pilih bf16 ketika LLM / DiT quantisasi kebisingan menjadi masalah (panjang bentuk sintesis, suara kloning kesetiaan).
Penggunaan 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
Contoh
# 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
Kloning suara
Klon suara apapun dari contoh audio referensi pendek menggunakan --voice-sample flag. CosyVoice3 menggunakan CAM + + speaker enkoder untuk mengekstrak sebuah 192-dim embedding bahwa kondisi model arus 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
¶ How It Works ¶
- Enkoder speaker CAM + + ekstrak 192-dim embedding dari audio referensi via CoreML (Neural Engine)
- Proyeksi Affinus (192 → 80) kondisi aliran DiT pencocokan decoder pada suara target
- vocoder HiFi- GAN ubah speaker- conditioned mel spectrogram ke audio 24kHz
Pengisi Suara
| Properti | Nilai |
|---|---|
| Model | CAM + + (Contexts -Ealned Masking + +) |
| Embedding | dimensi 192 |
| Backend | CoreML (Neural Engine, FP16) |
| Ukuran | ~ 14 MB |
| HuggingFace | aufklarer/CamPlusPlus-Speaker-CoreML |
Model CAM + + diunduh secara otomatis pada penggunaan pertama dari --voice-sampleLihat Suara Kloning panduan untuk referensi tips audio dan Swift API.
Dialog Sambung Multi-
Sinkronisasi percakapan antara banyak pembicara menggunakan tag speaker inline. Setiap speaker diberikan suara dari berkas audio referensi melalui --speakers Bendera.
# 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
Speaker nama dalam tag adalah tidak sensitif dan cocok dengan kunci pemetaan. Sebuah jeda keheningan yang dapat diatur (baku 0.2s) dimasukkan diantara belitan.
| Opsi | Baku | Deskripsi |
|---|---|---|
--speakers | Pemetaan suara: s1=file.wav,s2=file.wav | |
--turn-gap | 0.2 | Keheningan antara putaran (detik) |
--crossfade | 0.0 | Crossfade tumpang tindih antara putaran (detik) |
Tag Emosi & amp; Gaya
Kontrol gaya berbicara per segmen menggunakan tag emosi inline. CosyVoice3 menggunakan awalan teks sebelum <|endofprompt|> token sebagai sebuah instruksi gaya - peta tag emosi untuk instruksi bahasa alami yang menggantikan prefiks ini.
# 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
Bangun-dalam Tag Emotion
| Tag | Instruksi |
|---|---|
happy / excited | Bicaralah dengan senang hati dan dengan kegembiraan. |
sad | Bicara sedih dengan nada melankolis. |
angry | Bicara dengan kemarahan dan intensitas. |
whispers / whispering | Bicara dengan lembut, lembut berbisik. |
laughs / laughing | Bicara sambil tertawa. |
calm | Bicaralah dengan tenang dan damai. |
surprised | Berbicara dengan kejutan dan takjub. |
serious | Bicaralah dengan nada formal yang serius. |
Tag tidak dikenal melalui sebagai instruksi freform, jadi (Speak in a slow, dramatic voice) Bekerja seperti...
Tokens Kendali Model (fl_ token)
Secara internal, CosyVoice3 LLM menggunakan token kontrol khusus - prefixed fl_ - untuk berpindah antara mode (zero-shot kloning, menginstruksikan sintesis, menyimpan speaker, dsb.). Token ini adalah bagian dari upstream FunAudioLLM tokenizer; Soniqo waktu-jalan memancarkan yang benar secara otomatis berdasarkan bendera CLI atau Swift API Panggilan Anda gunakan, sehingga Anda tidak pernah menulis mereka dengan tangan.
| Token kendali | Mode | Bagaimana cara memanggil dari Soniqo |
|---|---|---|
<|fl_speaker_clone|> | Zero- tembakan suara kloning dari sampel audio referensi | Pass --voice-sample reference.wav on the CLI, or set voiceSample: di Swift API. |
<|fl_speaker_instruct|> | Instruksi- atau style- conditioned synthesis dengan suara baku | Pass --cosy-instruct "Speak cheerfully" atau gunakan inline (happy) tag tanpa --voice-sample. |
<|fl_speaker_instruct2|> | Instruksi sintesis dikombinasikan dengan sebuah suara referensi kloning | Kombinasi --voice-sample reference.wav dengan --cosy-instruct "..." (atau tag emosi inline) dalam panggilan yang sama. |
<|fl_save_speaker|> | Persist sebuah speaker 's embedding untuk re-use tanpa re-encoding referensi audio setiap panggilan | Tidak secara langsung terkena dalam Soniqo CLI - penggelapan dihitung setiap panggilan. Untuk cache, ekstrak 192-dim CAM + + vektor sendiri via Embeddings Speaker modul dan lulus ke depan. |
<|fl_speaker_clone_zh|>, <|fl_speaker_clone_en|>, … | Bahasa - spesifik zero- tembakan isyarat kloning digunakan oleh hulu tokenizer | Kombinasi --voice-sample dengan --language german|spanish|chinese|...Soniqo memilih petunjuk bahasa yang benar dari --language Bendera. |
Tabel di atas memetakan setiap hulu fl_ controI token untuk yang Soniqo ekuivalen. Anda tidak perlu splice fl_ token ke anda sendiri - lulus peringkat tertinggi CLI flags atau Swift argumen API dan waktu-jalan akan memancarkan urutan yang benar: clone Iverinder karakter instruct2 deserb _ speaker.
Sampling
Tahap LLM menggunakan konfigurasi sampling berikut:
| Parameter | Nilai |
|---|---|
| Top- k | 25 |
| Top- p | 0.8 |
| Ulangi Sampling Pengetahuan | Diaktifkan (window = 10, tau _ r = 0.1) |
Ulangi Sampling (RAS), dari Valle-E 2, token yang muncul dalam 10 token yang dihasilkan terakhir. Hal ini mencegah artefak audio berulang dan meningkatkan stabilitas keluaran.
Penampilan
Pada M2 Max, CosyVoice3 mencapai sebuah RTF dari sekitar 0.5 - lebih cepat dari waktu sebenarnya.
| Tahap | Latensi |
|---|---|
| LLM (terkompile) | ~ 13 ms / token |
| Flow DiT Cocok | 370 - 520 md |
| HiFi- GAN | 50 - 170 md |
Kuantisasi LLM varian (8-bit / 8-bit-full) gunakan compile(shapeless: true) untuk loop autoregresif, yang menghilangkan rekompilasi overhead di berbagai urutan panjang. bf16 variant melewati kompile yang - MLX-Swift 's tracer tidak dapat menyimpulkan bentuk keluaran dari bias- fused matmul yang polos Linear Gunakan - dan menjalankan loop generasi penuh semangat. Batch-double CFG separuh dari jumlah DiT maju melewati dari 20 ke 10 dalam semua varian.
Qwen3-ASR speech-to-text · Parakeet TDT speech- to-text · Kokoro-82M TTS