Automatische vertaling · Engels origineel
CosyVoice3
Voer CosyVoice3 lokaal uit op Mac met MLX voor spraak in negen talen en stemklonen vanaf een korte opname. Luister naar de standaard, gekloonde en stijlgestuurde voorbeelden, probeer dan te klonen met referentieaudio en het exacte transcript.
Audiomonsters · Kloon een stem met de CLI · Ondersteunde talen · Volledige vijftalige vergelijking en methodologie van spraakklonen
Audiomonsters
Luister naar de bestaande standaardstem, de kloon gemaakt van Kokoro af_heart, en het stijlgestuurde voorbeeld. Het onderstaande CLI voorbeeld gebruikt een aparte FLEURS referentie.
8-bit CosyVoice3 synthese met een vaste zaad.
CosyVoice3 klonen van de Kokoro af_heart referentieclip.
Een heldere, opgewonden levering met --cosy-instruct.
Kloon een stem met de CLI
Download Reference audio als referentie.wav. Het commando gebruikt het exacte transcript; vervang zowel de opname als het transcript bij het gebruik van uw eigen stemmonster.
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 beschikbaarheid
Deze gids en Soniqo's runtime ondersteunen de open Fun-CosyVoice 3-0.5B (3.0) regel. De officiële open-source repository publiceert momenteel en documenten 3.0 met inbegrip van Fun-CosyVoice3-0.5B-2512en onthult CosyVoice 3,5 gewichts- of gevolgcode. De afzonderlijke cosyvoice-v3.5-plus naam is een Alibaba Cloud Model Studio API model ID, niet een downloadbaar controlepunt in die repositor, dus Soniqo heeft geen aanspraak op lokale 3.5 ondersteuning.
Ondersteunde talen
| Taal | Rubriek |
|---|---|
| Chinees | Chinees |
| Engels | nederlands |
| Japans | japans |
| Koreaans | Koreaans |
| Duits | Duits |
| Spaans | spaans |
| Frans | Frans |
| Italiaans | Italiaans |
| Russisch | russisch |
Pijpleiding
CosyVoice3
- LLM Qwen2.5-0.5B backbone genereert FSQ (Finite Scalar Quantizing) spraaktonen uit tekst
- Bijpassende ditstroom Een 22-laag Diffusion Transformer zet spraaktonen om in mel spectrograms via Euler ODE integratie
- HiFi-GAN De neurale bron filter vocoder zet mel spectrograms om in 24 kHz golfvormen
Architectuur
LLM (Qwen2.5-0.5B)
De huidige runtime ondersteunt bf16 (standaard), 8bit en 8bit-full. Selecteer een bundel met --cosyvoice-variant. Het taalmodel genereert discrete spraaktekens automatisch.
| Parameter | Waarde |
|---|---|
| Lagen | 24 |
| Verborgen dimensie | 896 |
| Zoekkoppen | 14 |
| Sleutel/waarde hoofden | 2 (GQA) |
| FSQ-vocabulaire | 6561 |
| Kwantisering | bf16 / 8-bit |
Bijpassende ditstroom
De Diffusion Transformer verfijnt spraaktonen in mel spectrograms met behulp van voorwaardelijke flow matching met classifier-vrije begeleiding.
| Parameter | Waarde |
|---|---|
| Lagen | 22 |
| Dimensie | 1024 |
| Aandachtskoppen | 16 |
| Conditionering | AdaLN (Adaptive Layer Norm) |
| ODE-oplosser | Euler, 10 stappen |
| CFG-percentage | 0.7 |
HiFi-GAN Vocoder
Een Neurale Bron Filter (NSF) vocoder die mel spectrograms omzet naar golfvormen.
| Parameter | Waarde |
|---|---|
| Harmonics | 8 |
| Upsample ratio | 480x (8 x 5 x 3 x ISTFT 4) |
| ISTFT | n_fft=16, hop=4 |
| Uitvoermonstersnelheid | 24 kHz |
Modelgewichten
| Variant | LLM | DiT | Grootte | HuggingFace |
|---|---|---|---|---|
8bit | int8, groep=64 | bf16 | ~1,4 GB | aufklarer/CosyVoice3-0.5B-MLX-8bit |
8bit-full | int8, groep=64 | int8, groep=64 | ~1,6 GB | aufklarer/CosyVoice3-0.5B-MLX-8bit-full |
bf16 | bf16 | bf16 | ~2,1 GB | aufklarer/CosyVoice3-0.5B-MLX-bf16 |
Elke bundel omvat de LLM, de DiT-stroom-matching decoder, de HiFi-GAN vocoder, en de S3-Tokenizer referentie-encoder die nodig is voor het klonen van stemmen zonder shot. Kies kleinere bundels voor kleinere download / schijfvoetafdruk; pick bf16 wanneer LLM/DiT kwantificatiegeluid een probleem wordt (lange-vorm synthese, stemklonen trouw).
CLI-gebruik
# 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
Voorbeelden
# 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
Stemklonen
Kloon elke stem van een kort referentie-audiomonster met behulp van de --voice-sample vlag. CosyVoice3 gebruikt de CAM++ luidspreker-encoder om een 192-dim inbedding te extraheren die het DiT-stroommodel conditioneert.
# 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
Hoe het werkt
- CAM++ speaker-encoder haalt een 192-dim inbedding uit het referentieaudio via CoreML (Neural Engine)
- Fijne projectie (192 → 80) conditioneert de DiT-stroom die overeenkomt met de decoder op de doelstem
- HiFi-GAN vocoder zet het speaker-conditioned mel spectrogram om naar 24kHz audio
Speakercoder
| Eigenschap | Waarde |
|---|---|
| Model | CAM++ (Context-Aware Masking++) |
| Inbedding | 192 afmetingen |
| Backend | CoreML (Neural Engine, FP16) |
| Grootte | 14 MB |
| HuggingFace | aufklarer/CamPlusPlus-Speaker-CoreML |
Het CAM++-model wordt automatisch gedownload bij het eerste gebruik van --voice-sample. Zie de Voice Cloning -gids voor referentie-audiotips en de Swift API.
Multi-sprekerdialoog
Gesprekken synchroniseren tussen meerdere luidsprekers met behulp van inline luidsprekertags. Elke spreker krijgt via de --speakers een stem toegewezen vanuit een referentieaudiobestand.
# 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
Speakernamen in tags zijn hoofdletterongevoelig en komen overeen met de mapping-toetsen. Er wordt een configureerbare stiltekloof (standaard 0.2s) tussen de beurten ingevoegd.
| Optie | Standaard | Omschrijving |
|---|---|---|
--speakers | Speaker mapping: s1=file.wav,s2=file.wav | |
--turn-gap | 0.2 | Stilte tussen bochten (seconden) |
--crossfade | 0.0 | Crossfade overlapping tussen bochten (seconden) |
Emotie & Stijl Tags
Controleer de spraakstijl per segment met behulp van inline emotie-tags. CosyVoice3 gebruikt het tekstvoorvoegsel voor de <|endofprompt|>
# 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
Ingebouwde Emotion-tags
| Tag | Instructie |
|---|---|
happy / excited | Spreek gelukkig en met spanning. |
sad | Spreek jammer genoeg met een melancholische toon. |
angry | Praat met woede en intensiteit. |
whispers / whispering | Spreek in een zachte, zachte fluistering. |
laughs / laughing | Spreek terwijl je lacht. |
calm | Spreek rustig en vredig. |
surprised | Spreek met verbazing en verbazing. |
serious | Spreek in een serieuze, formele toon. |
Onbekende tags passeren als vrije vorm instructies, dus (Speak in a slow, dramatic voice) werkt als-is.
Model Control Tokens (fl_ tokens)
Intern maakt de CosyVoice3 LLM gebruik van speciale controletekens die vooraf zijn bevestigd fl_ . Deze tokens maken deel uit van de upstream FunAudioLLM tokenizer; de Soniqo runtime zendt de juiste uit automatisch op basis van de CLI-vlag of Swift API aanroept u, zodat u ze nooit met de hand schrijft.
| Token controleren | Modus | Oproepen van Soniqo |
|---|---|---|
<|fl_speaker_clone|> | Zero-shot stemklonen van een referentie audiomonster | Geef --voice-sample reference.wav door op de CLI, of stel voiceSample: op de Swift API. |
<|fl_speaker_instruct|> | Instructie- of stijlgestuurde synthese met een standaardstem | Pass --cosy-instruct "Speak cheerfully" of gebruik een inline (happy)-tag zonder --voice-sample. |
<|fl_speaker_instruct2|> | Instructiesynthese gecombineerd met een gekloonde referentiestem | Combineer --voice-sample reference.wav met --cosy-instruct "..." (of een inline emotie-tag) in dezelfde oproep. |
<|fl_save_speaker|> | Persist een speaker's inbedding voor hergebruik zonder hercodering van de referentie audio elke oproep | Niet direct blootgesteld in de Soniqo CLI › inbeddingen worden berekend per oproep. Om de 192-dim CAM++ vector zelf uit te pakken en door te geven via de Speaker Inbeddingen module. |
<|fl_speaker_clone_zh|>, <|fl_speaker_clone_en|>, … | Taalspecifieke zero-shot klonen hints gebruikt door de upstream tokenizer | Combineer --voice-sample met --language german|spanish|chinese|.... Soniqo selecteert de juiste taaltip van de --language. |
In de tabel hierboven wordt elke upstream fl_ controleteken weergegeven op zijn Soniqo equivalent. Je hoeft nooit fl_ tokens in je prompt te spliceren en je moet de CLI-vlaggen op hoog niveau doorlaten of Swift API argumenten en de runtime zal de juiste volgorde uitstralen: kloon → instruct2 → save_speaker.
Steekproef
De LLM-fase maakt gebruik van de volgende bemonsteringsconfiguratie:
| Parameter | Waarde |
|---|---|
| Top-k | 25 |
| Top-p | 0.8 |
| Herhaling van de bekende bemonstering | Ingeschakeld (venster=10, tau_r=0.1) |
Herhaling Aware Sampling (RAS), uit VALL-E 2, straft tokens die in de laatste 10 gegenereerde tokens verschenen. Dit voorkomt repetitieve audio artefacten en verbetert de outputstabiliteit.
Prestaties
Op een M2 Max, CosyVoice3 bereikt een RTF van ongeveer 0,5
| Fase | Matigheid |
|---|---|
| LLM (gecompileerd) | ~13 ms/token |
| Bijpassende ditstroom | 370 - 520 ms |
| HiFi-GAN | 50 - 170 ms |
De quantized LLM varianten (8-bit / 8-bit-full) gebruiken compile(shapeless: true) voor de autoregressieve lus, die recompilatie overhead over verschillende sequentielengtes elimineert. De bf16-variant slaat over die .. MLX-Swift's vormloze tracer compileert kan de uitvoervorm van de door bias-gefuseerde matmul die vlak Linear gebruikt niet beïnvloeden en de generatielus gretig draait. Bat-doubled CFG overstijgt het aantal DiT-forward gaat van 20 tot 10 in alle varianten.
Qwen3-ASR spraak-naar-tekst · Parakeet TDT spraak-naar-tekst · Kokoro-82M TTS