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.

Bahasa Inggris BakuCosyVoice3 8- bit

8-bit CosyVoice3 sintesis dengan benih tetap.

Kloning suaraacuan asf _ heart

CosyVoice3 kloning dari Kokoro af _ heart reference clip.

Instruksi gaya--cosy-instruct

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

Apa dukungan Soniqo

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

BahasaKode
CinaCina
InggrisInggris
JepangJepang
Koreakorea
JermanJerman
SpanyolSPANYOL
PerancisPerancis
ItaliaItalia
RusiaRusia

Baris pipa

CosyVoice3 mensintesis pidato dalam tiga tahap:

  1. LLM - Qwen2.5-0.5B tulang punggung menghasilkan FSQ (Finite Scalar Quantization) token suara dari teks
  2. Flow DiT Cocok - A 22-layer Diffusion Transformer konversi token bicara ke spektrogram mel melalui integrasi Euler ODE
  3. 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.

ParameterNilai
Lapisan24
Dimensi Tersembunyi896
Kepala kuiri14
Kepala kunci / Nilai2 (GQA)
kosakata FSQ6561
Kuantisasibf16 / 8- bit

Flow DiT Cocok

The Difusi Transformer membersihkan token bicara menjadi spektrogram mel menggunakan aliran kondisional pencocokan dengan bimbingan bebas klasifikasi.

ParameterNilai
Lapisan22
Dimensi1024
Perhatian kepala16
MengkondiasiAdaLN (Norm Lapis Adaptif)
Penyelenggara ODEEuler, 10 langkah
Laju CFG0.7

Vocoder HiFi- GAN

Sebuah penyaring Sumber Neural (NSF) vocoder yang mengubah spektrogram mel menjadi gelombang.

ParameterNilai
Harmonik8
Rasio contoh480x (8 x 5 x 3 x SISTFT 4)
SISTFTn _ fft = 16, hop = 4
Laju cuplikan keluaran24 kHz

Model Weights

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

  1. Enkoder speaker CAM + + ekstrak 192-dim embedding dari audio referensi via CoreML (Neural Engine)
  2. Proyeksi Affinus (192 → 80) kondisi aliran DiT pencocokan decoder pada suara target
  3. vocoder HiFi- GAN ubah speaker- conditioned mel spectrogram ke audio 24kHz

Pengisi Suara

PropertiNilai
ModelCAM + + (Contexts -Ealned Masking + +)
Embeddingdimensi 192
BackendCoreML (Neural Engine, FP16)
Ukuran~ 14 MB
HuggingFaceaufklarer/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.

OpsiBakuDeskripsi
--speakersPemetaan suara: s1=file.wav,s2=file.wav
--turn-gap0.2Keheningan antara putaran (detik)
--crossfade0.0Crossfade 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

TagInstruksi
happy / excitedBicaralah dengan senang hati dan dengan kegembiraan.
sadBicara sedih dengan nada melankolis.
angryBicara dengan kemarahan dan intensitas.
whispers / whisperingBicara dengan lembut, lembut berbisik.
laughs / laughingBicara sambil tertawa.
calmBicaralah dengan tenang dan damai.
surprisedBerbicara dengan kejutan dan takjub.
seriousBicaralah 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 kendaliModeBagaimana cara memanggil dari Soniqo
<|fl_speaker_clone|>Zero- tembakan suara kloning dari sampel audio referensiPass --voice-sample reference.wav on the CLI, or set voiceSample: di Swift API.
<|fl_speaker_instruct|>Instruksi- atau style- conditioned synthesis dengan suara bakuPass --cosy-instruct "Speak cheerfully" atau gunakan inline (happy) tag tanpa --voice-sample.
<|fl_speaker_instruct2|>Instruksi sintesis dikombinasikan dengan sebuah suara referensi kloningKombinasi --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 panggilanTidak 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 tokenizerKombinasi --voice-sample dengan --language german|spanish|chinese|...Soniqo memilih petunjuk bahasa yang benar dari --language Bendera.
Jika Anda porting dari FunAudioLLM / CosyVoice

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:

ParameterNilai
Top- k25
Top- p0.8
Ulangi Sampling PengetahuanDiaktifkan (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.

TahapLatensi
LLM (terkompile)~ 13 ms / token
Flow DiT Cocok370 - 520 md
HiFi- GAN50 - 170 md
Kompilasi

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.