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.

Standaard EngelsCosyVoice3 8-bit

8-bit CosyVoice3 synthese met een vaste zaad.

Voice-kloonaf_heart-referentie

CosyVoice3 klonen van de Kokoro af_heart referentieclip.

Stijlinstructie--cosy-instruct

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

Wat ondersteunt Soniqo

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
Japansjapans
KoreaansKoreaans
Duits Duits
Spaansspaans
Frans Frans
Italiaans Italiaans
Russischrussisch

Pijpleiding

CosyVoice3

  1. LLM Qwen2.5-0.5B backbone genereert FSQ (Finite Scalar Quantizing) spraaktonen uit tekst
  2. Bijpassende ditstroom Een 22-laag Diffusion Transformer zet spraaktonen om in mel spectrograms via Euler ODE integratie
  3. 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
Lagen24
Verborgen dimensie896
Zoekkoppen14
Sleutel/waarde hoofden2 (GQA)
FSQ-vocabulaire6561
Kwantiseringbf16 / 8-bit

Bijpassende ditstroom

De Diffusion Transformer verfijnt spraaktonen in mel spectrograms met behulp van voorwaardelijke flow matching met classifier-vrije begeleiding.

Parameter Waarde
Lagen22
Dimensie1024
Aandachtskoppen16
ConditioneringAdaLN (Adaptive Layer Norm)
ODE-oplosserEuler, 10 stappen
CFG-percentage0.7

HiFi-GAN Vocoder

Een Neurale Bron Filter (NSF) vocoder die mel spectrograms omzet naar golfvormen.

Parameter Waarde
Harmonics8
Upsample ratio480x (8 x 5 x 3 x ISTFT 4)
ISTFTn_fft=16, hop=4
Uitvoermonstersnelheid24 kHz

Modelgewichten

VariantLLMDiT GrootteHuggingFace
8bitint8, groep=64bf16~1,4 GBaufklarer/CosyVoice3-0.5B-MLX-8bit
8bit-fullint8, groep=64int8, groep=64~1,6 GBaufklarer/CosyVoice3-0.5B-MLX-8bit-full
bf16bf16bf16~2,1 GBaufklarer/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

  1. CAM++ speaker-encoder haalt een 192-dim inbedding uit het referentieaudio via CoreML (Neural Engine)
  2. Fijne projectie (192 → 80) conditioneert de DiT-stroom die overeenkomt met de decoder op de doelstem
  3. HiFi-GAN vocoder zet het speaker-conditioned mel spectrogram om naar 24kHz audio

Speakercoder

Eigenschap Waarde
ModelCAM++ (Context-Aware Masking++)
Inbedding192 afmetingen
BackendCoreML (Neural Engine, FP16)
Grootte14 MB
HuggingFaceaufklarer/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
--speakersSpeaker mapping: s1=file.wav,s2=file.wav
--turn-gap0.2Stilte tussen bochten (seconden)
--crossfade0.0Crossfade 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

TagInstructie
happy / excitedSpreek gelukkig en met spanning.
sadSpreek jammer genoeg met een melancholische toon.
angryPraat met woede en intensiteit.
whispers / whisperingSpreek in een zachte, zachte fluistering.
laughs / laughingSpreek terwijl je lacht.
calmSpreek rustig en vredig.
surprisedSpreek met verbazing en verbazing.
seriousSpreek 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 controlerenModusOproepen 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 standaardstemPass --cosy-instruct "Speak cheerfully" of gebruik een inline (happy)-tag zonder --voice-sample.
<|fl_speaker_instruct2|>Instructiesynthese gecombineerd met een gekloonde referentiestemCombineer --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 tokenizerCombineer --voice-sample met --language german|spanish|chinese|.... Soniqo selecteert de juiste taaltip van de --language.
Als je van FunAudioLLM/CosyVoice overdraagt

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-k25
Top-p0.8
Herhaling van de bekende bemonsteringIngeschakeld (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

FaseMatigheid
LLM (gecompileerd)~13 ms/token
Bijpassende ditstroom370 - 520 ms
HiFi-GAN50 - 170 ms
Compilatie

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.