Maskinoversættelse · Engelsk original

Stemmekloning

Klone enhver stemme fra en kort reference lydprøve. IndexTTS2 tilføjer indfødte MLX zero- shot kloning med følelser, tempo, og pause kontrol, sammen med Qwen3-TTS og CosyVoice3 speaker- encoder kloning.

Sådan virker det

  1. Optag eller fremlæg en referencelydprøve af målstemmen
  2. Ekstraktion af højttalerindlejring - en højttaler indkoder behandler referencen lyd i en fixed- dimensional indlejring vektor
  3. Indlejring - højttaleren indlejring betingelser TTS model under syntesen
  4. Talesyntese - TTS-modellen genererer tale, der matcher referenceprøvens stemmeegenskaber

Motorer

Stemmekloning er tilgængelig med flere TTS motorer. IndexTTS2 bruger hurtig lyd og stil konditionering; Qwen3-TTS og CosyVoice3 bruge højttaler encoders:

F5-TTS og Higgs TTS 3 Spring højttaleren helt over: F5 betingelserne for den rå referencemel plus udskrift heraf Higgs fortsætter kokodede referencerammer.

MotorSpeaker EncoderIndlejringBackend
Qwen3-TTSECAPA- TDNN1024-dim x- vektorMLX (GPU)
CosyVoice3CAM + +192- dimCoreML (Neural Engine)
IndexTTS2w2v-BERT + MaskinGCT + CAMPPlussemantiske koder + prompt mel + 192- dim stilMLX (GPU)
F5-TTSnone - rå reference mel + udskrift100-bånds referencemelMLX (GPU)
Higgs TTS 3Higgs codec encoderReferencekoder for 8- kodebookMLX (GPU)

IndexTTS2 Stemmekloning

IndexTTS2 er en indfødt MLX zero- shot voice- kloning motor. --voice-sample, downloads aufklarer/IndexTTS2-MLX-fp16 som standard, og understøtter valgfri følelser / stil referencer, forudindstillet eller vektor følelser kontrol, speaking- rate justering, og internal- pause capping. Det kører i øjeblikket batch syntese kun. Emotion kan komme fra en forudindstillet eller en 8- værdi vektor (--indextts2-emotion, vægtet efter --indextts2-emotion-weight) eller fra en separat stilreference (--indextts2-emotion-audio); --indextts2-s2mel-steps Handler flow trin for hastighed (standard 15, ear- valideret). Efter float32-attention afkode omarbejde det syntetiseres på RTF GRAW 1.0 på en M5 Pro. Mandarin og blandet kinesisk / engelsk tekst håndteres indadrettet - opstrøms punktuation omskrivning og per- tegn pre-adminisation - numre læses ud i ord, og lang tekst er syntetiseret i punktuation- justeret segmenter.

F5-TTS Stemmekloning

F5-TTS kloner fra en ~ 10- anden reference plus dens udskrift (--f5-reference-text) gennem DiT flow matching - ingen højttaler encoder overhovedet. Det er den hurtigste kloning sti i pakken (RTF 0.57 på standard 16 flow trin, lavere er hurtigere) og den mindste (~ 0.8 GB peak RSS), der dækker engelsk og mandarin. Se F5-TTS guide.

Higgs TTS 3 Stemmekloning

Higgs TTS 3 (4B) indkoder referenceklipsen i codec rammer og fortsætter det: ekspressiv konversationel levering med inline følelser, stil, og SFX tags, 100+ sprog RTF 0.78En referencetrykning (--higgs-ref-text) forbedrer kloning. Higgs TTS 3 guide.

CosyVoice3 + CAM + +

CosyVoice3 bruger CAM + + (Context- Aware Masking + +) højttaler encoder fra Alibaba 's 3D- Speaker projekt. 192- dim indlejring betingelser DiT flow model via en affin projektion lag (192 → 80), der blev i fællesskab uddannet med CosyVoice3.

CAM + + Arkitektur

FaseVarebeskrivelse
FCMForende convolutional modul (Conv2d + 2 ResBlocks, 32 kanaler)
TDNNTime Delay Neurale Network (320 til 128 kanaler, kerne størrelse 5)
D-TDNN-blokke3 densely- forbundne blokke (12 / 24 / 16 lag) med berøringsfølsom maskering
Stats PoolGennemsnitlig + standardafvigelse pooling (global statistik)
TændeLineær projektion til 192- dim indlejring

CoreML modellen (~ 14 MB, FP16) kører på Neural Engine. Det downloades automatisk fra aufklarer/CamPlusPlus-Speaker-CoreML til første brug.

Qwen3-TTS Stemmekloning

Qwen3-TTS understøtter to stemme kloning tilstande:

ICL-tilstand (anbefales)

In- Context Learning mode indkoder referencen lyd i codec tokens via Mimi tale encoder og forbereder dem med reference udskrift. Dette giver modellen fuld akustisk kontekst - højere kvalitet og pålidelig EOS (løser problemer med korte tekster og ikke-engelske sprog).

let (model, encoder) = try await Qwen3TTSModel.fromPretrainedWithEncoder()
let audio = model.synthesizeWithVoiceCloneICL(
    text: "Target text to synthesize.",
    referenceAudio: refSamples,
    referenceSampleRate: 24000,
    referenceText: "Exact transcript of reference audio.",
    language: "english",
    codecEncoder: encoder
)

Qwen3-TTS konserves 1920 prøver pr. codec-ramme ved 24 kHz, herunder på tværs af overlappende afkodningsstykker. Begge præ-opsamplingslag bruger kernens bredde 2 og skrid 2 uden højre trimning, bevarelse af mål kurveform ved chunk grænser og under ICL reference fjernelse.

X- vektortilstand

Bruger en ECAPA- TDNN encoder, der producerer en 1024- dim x- vektor. Ingen udskrift nødvendig, men lavere kvalitet. Kan undlade at udsende EOS på korte tekster eller visse sprog.

ECAPA- TDNN Arkitektur

FaseVarebeskrivelse
TDNNTime Delay Neurale Network (128 til 512 kanaler, kerne størrelse 5)
SE-Res2Net blokke3 blokke med Squeeze- and- Spænding (512 kanaler, dilatation 2 / 3 / 4)
MFAMultilags funktion Aggregation (1536 kanaler + Retual)
ASPAttentive Statistics Pooling (1536 kanaler, softmax over tid)
FCFuldt forbundet lag (3072-1024 dimensioner)

Vægten (76 parametre) er inkluderet i Qwen3-TTS safetensorer - ingen separat download kræves.

CLI-brug

# CosyVoice3 voice cloning (CAM++, CoreML Neural Engine)
.build/release/speech speak "Text in the cloned voice" \
    --engine cosyvoice --voice-sample reference.wav -o output.wav

# IndexTTS2 voice cloning (expanded MLX bundle)
.build/release/speech speak "Text in the cloned voice" \
    --engine indextts2 --voice-sample reference.wav \
    --indextts2-speaking-rate 1.35 \
    --indextts2-max-pause 0.05 \
    -o output.wav

# F5-TTS voice cloning (reference + transcript, MLX GPU)
.build/release/speech speak "Text in the cloned voice" \
    --engine f5 --voice-sample reference.wav \
    --f5-reference-text "Transcript of the reference clip." -o output.wav

# Higgs TTS 3 voice cloning (4B, expressive, MLX GPU)
.build/release/speech speak "Text in the cloned voice" \
    --engine higgs --voice-sample reference.wav \
    --higgs-ref-text "Transcript of the reference clip." -o output.wav

# Qwen3-TTS voice cloning (ECAPA-TDNN, MLX GPU)
.build/release/speech speak "Text in the cloned voice" \
    --voice-sample reference.wav -o output.wav

Eksempler

# CosyVoice3: multilingual voice cloning (9 languages)
.build/release/speech speak "Hello, this is my cloned voice." \
    --engine cosyvoice --voice-sample my_voice.wav -o cloned_hello.wav

# CosyVoice3: clone voice in a different language
.build/release/speech speak "Guten Tag, das ist meine geklonte Stimme." \
    --engine cosyvoice --voice-sample my_voice.wav --language german -o german.wav

# Qwen3-TTS: English voice cloning
.build/release/speech speak "The quick brown fox jumps over the lazy dog." \
    --voice-sample recording_15s.wav -o cloned_fox.wav

# IndexTTS2: local exported bundle
.build/release/speech speak "This voice was cloned locally." \
    --engine indextts2 --voice-sample my_voice.wav \
    --indextts2-speaking-rate 1.35 \
    --indextts2-max-pause 0.05 \
    --indextts2-bundle-dir /path/to/IndexTTS2-MLX-fp16 \
    -o indextts2.wav

Dialog mellem flere formænd

CosyVoice3 understøtter multi-højtaler dialog med per- højtaler stemme kloning. --speakers flag til at kortlægge højttalermærker til reference lydfiler:

# 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

# Dialogue with emotion tags + voice cloning
.build/release/speech speak "[S1] (happy) Great news! [S2] (surprised) Really? Tell me more." \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o emotional_dialogue.wav

# Adjust silence between turns
.build/release/speech speak "[S1] First line. [S2] Second line." \
    --engine cosyvoice --speakers s1=a.wav,s2=b.wav --turn-gap 0.5 -o gapped.wav

Hver højttalers reference lyd behandles gennem CAM + + encoder til at udtrække en 192- dim-indlejring. Modellen er indlæst én gang og genbruges for alle højttalere. Se CosyVoice3 guide for fuld information om dialog syntaks og følelser tags.

Reference lydtips

Vigtigt

For Qwen3-TTS, stemme kloning arbejder med base model alene - ikke customVoice. CosyVoice3 stemmekloning fungerer med standardmodellen. IndexTTS2 kræver --voice-sample, kører i øjeblikket batch syntese kun, og accepterer valgfri følelser / stil kontrol.

Swift API

import CosyVoiceTTS

// CosyVoice3 voice cloning
let model = try await CosyVoiceTTSModel.fromPretrained()
let speaker = try await CamPlusPlusSpeaker.fromPretrained()

// Extract 192-dim speaker embedding from reference audio
let embedding = try speaker.embed(audio: refSamples, sampleRate: 16000)

// Synthesize with cloned voice
let audio = model.synthesize(
    text: "Hello in a cloned voice!",
    speakerEmbedding: embedding
)

// With custom instruction + speaker embedding
let styledAudio = model.synthesize(
    text: "Hello!",
    instruction: "Speak happily and with excitement.",
    speakerEmbedding: embedding
)

// Multi-speaker dialogue
let segments = DialogueParser.parse("[S1] (happy) Hi! [S2] Hey there.")
let embeddings = ["S1": aliceEmbedding, "S2": bobEmbedding]
let dialogueAudio = DialogueSynthesizer.synthesize(
    segments: segments,
    speakerEmbeddings: embeddings,
    model: model,
    language: "english"
)
import Qwen3TTS

// Qwen3-TTS voice cloning
let model = try await Qwen3TTSModel.fromPretrained()
let audio = model.synthesizeWithVoiceClone(
    text: "Hello in a cloned voice!",
    referenceAudio: refSamples,
    referenceSampleRate: 24000
)
import IndexTTS2TTS

// IndexTTS2 zero-shot voice cloning
let model = try await IndexTTS2TTSModel.fromPretrained()
let audio = try await model.generate(
    text: "Hello in a cloned voice!",
    referenceAudio: URL(fileURLWithPath: "reference.wav"),
    synthesisOptions: try IndexTTS2SynthesisOptions(
        speakingRate: 1.35,
        maxInternalPauseDuration: 0.05)
)

Reference Audio Caching

Begge dele synthesizeWithVoiceClone (x- vektor) og synthesizeWithVoiceCloneICL (ICL) cache deres per- reference forbehandling på tværs af opkald på samme model eksempel. X- vektor sti caches ECAPA- TDNN højttaler indlejring; ICL sti derudover caches Mimi codec encoder output. Cache er indhold- adresseret (hash af råvarer prøver + prøve rate) og afgrænset til en lille LRU (standard 4 indgange), så gentagne generationer mod samme reference waveform springe mel + encoder passerer uden ubegrænset hukommelse vækst.

let tts = try await Qwen3TTSModel.fromPretrained()

// First call: runs ECAPA-TDNN, caches the embedding
_ = tts.synthesizeWithVoiceClone(text: "Hello", referenceAudio: ref, ...)

// Subsequent calls with the same reference: cache hit
_ = tts.synthesizeWithVoiceClone(text: "How are you?", referenceAudio: ref, ...)

// Explicit eviction (rarely needed — LRU handles capacity)
tts.clearReferenceAudioCache()