תרגום מכונה · המקור באנגלית

שכפול קול

הקליקו כל קול מדגימה אודיו קצרה. IndexTTS2 מוסיף Native MLX הצצה אפסית עם רגש, קצב, ועצירה שולטות, לצד Qwen3-TTS ו CosyVoice3 רמקולים-encoder cloning

איך זה עובד

  1. Record או לספק דגימת אודיו הפניה של קול היעד
  2. Talker להטביע את מיצוי - דובר מעבד את אודיו ההתייחסות לתוך וקטור מטביעה תלת-ממדית קבוע
  3. Embeddding ההזרקה - הדובר הטמיע תנאים TTS מודל במהלך סינתזה
  4. Speech synthesis - מודל TTS יוצר דיבור שמתאים למאפיינים הקוליים של הדגימה ההתייחסות

מנועים

שיבוט קול זמין עם מספר מנועי TTS IndexTTS2 משתמשים אודיו ומיזוג סגנון מהיר; Qwen3-TTS ו CosyVoice3 משתמש ברמקולים:

F5-TTS ו Higgs TTS 3 לדלג על הדובר קודר לחלוטין: F5 תנאים על האמייל הגלם בתוספת התמליל שלה, Higgs

מנוע מנוע מנועתגית: EncoderEmbeddingחזרה
Qwen3-TTSECAPA-TDNN1024-dim x-vectorMLX (GPU)
CosyVoice3CAM +192-dimCoreML (Neural Engine)
IndexTTS2w2v-BERT + MaskGCT + CAMPPlusקודים סמנטיים + חומצה מהירה + 192-dim סגנוןMLX (GPU)
F5-TTSתגית: Raw Reference mel + תמלילכתובת: 100-bandMLX (GPU)
Higgs TTS 3Higgs Codec encoder8 קודיםMLX (GPU)

IndexTTS2 קול Cloning

IndexTTS2 הוא מנוע הקולי MLX Zero-shot-cloning. --voice-sampleלהורדה aufklarer/IndexTTS2-MLX-fp16 כברירת מחדל, ותומכת בהתייחסויות רגש/סגנון אופציונלי, preset או ו- ו- ובקרת רגש הווקטור, התאמה דיבורית, ו-pause-pause capping.It מפעילה כיום סינתזזה רק. Emotion יכול לבוא מראש או 8-value וקטור ערך (((xQ0XXZ-ערך וקטור)-ערך).--indextts2-emotionמשקל על ידי --indextts2-emotion-weight(או מנקודת מבט נפרדת)--indextts2-emotion-audio); --indextts2-s2mel-steps מסחרים זורמים למהירויות (default) 15אוזן לאחר float32-attention פעוט מחדש הוא מסונתז ב RTF ≈ 1.0 על A M5 Pro. מנדרן וטקסט סיני / אנגלי מעורב מטופלים באופן מקורי - כתב מחדש של Upstream ו- per-character pre-tokenization - מספרים ידועים במילים, וטקסט ארוך מסונתז בפערים מטוהר.

F5-TTS קול Cloning

F5-TTS משטפת מ-10-II ההתייחסות בתוספת התמליל שלו (ZXQXQ1XZ-שנית)--f5-reference-text(באמצעות DiT Flow Matching - noרמקול encoder at all.It הוא הנתיב המהיר ביותר לחיקוי החבילה (החבילה)RTF 0.57 כברירת מחדל 16 מדרגות זרימה, נמוך יותר הוא מהיר יותר) והקטן ביותר (0.8 GB שיא RSS, כיסוי אנגלית ומנדרינית. F5-TTS.

Higgs TTS 3 Voice Cloning

Higgs TTS 3 (4B) מקודמת את קליפ ההתייחסות למסגרות קודק וממשיך: משלוח שיחה אקספרסיבי עם רגש, סגנון ותגי SFX, 100+ שפות, RTF 0.78המונחים: a Reference tag--higgs-ref-text· שיפור השיבוט. Higgs TTS 3 מדריך.

CosyVoice3 + CAM +

CosyVoice3 משתמש ב- CAM + (Context-Aware Masking++) רמקולים מפרויקט 3D-Talker של עליבאבא. 192-dim הטמיעו תנאים מודל זרימת הדי-T באמצעות שכבת הקרנה של Affine (192 80) שהוכשר במשותף עם CosyVoice3

CAM + אדריכלות

שלב השלבתיאור תיאור
FCMמודול החזית-סוף (Conv2d + 2 ResBlocks, 32 ערוצים)
TDNNTime Delay Neural Network (320 עד 128 ערוצים, גודל הקרנל 5)
בלוקים D-TDNN3 בלוקים מחוברים בצפיפות (12/24/16 שכבות) עם מסיכה בין-מודע
תגית: Stats Poolממוצע + סטייה סטנדרטית בריכות (גלובל סטטיסטיקות)
Denseהקרנה קונארית ל-192-dim

דגם CoreML (~14 MB, FP16) פועל על Neural Engine.It is download אוטומטית מ aufklarer/CamPlusPlus-Speaker-CoreML

Qwen3-TTS Voice Cloning

Qwen3-TTS תומך בשני מצבי שיבוט קול:

ICL Mode (Recommended)

במצב למידה In-Context מקודש את השמע ההתייחסות לסימון קודק באמצעות Mimi

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 משמר 1920 דוגמאות ל-codec מסגרת 24 kHz, כולל על פני גושי קוד חופפים.שניהם שכבות טרום-תזונה משתמשים רוחב ליבה 2 צעדים 2 ללא הטריק הנכון, שמירה על טופס היעד על הגבולות ובמהלך הסרת ההתייחסות של ICL.

X-Vector Mode

השתמש בקוד ECAPA-TDNN המייצר 1024-dim x-vector.אין צורך בתעתיק אלא באיכות נמוכה יותר. מאי יימנע מלפלט את ה- EOS בטקסטים קצרים או בשפות מסוימות.

אדריכלות ECAPA-TDNN

שלב השלבתיאור תיאור
TDNNTime Delay Neural Network (128 עד 512 ערוצים, גודל הקרנל 5)
SE-Res2Net בלוקים3 חוסם עם Squeeze-and-Exציטוט (512, dilation 2/3 / 4)
MFAMulti-layer Feature Aggregation (1536 ערוצים + ReLU)
ASPסטטיסטיקות עקביות פולינג (1536 ערוצים, Softmax לאורך זמן)
FC FCשכבה מחוברת מלאה (3072 עד 1024 ממדים)

המשקלים (76 פרמטרים) כלולים ב Qwen3-TTS מעכבי בטיחות - אין צורך בהורדה נפרדת.

CLI Usage

# 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

דוגמאות

# 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

דיאלוג רב-דבר

CosyVoice3 תומך בדיאלוג רב-רמקול עם קול רמקול שיבוטט. השתמש בדגל --speakers כדי למפות תגים לסימון קבצים:

# 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

כל אודיו ההתייחסות של הדובר מעובד דרך CAM + קודר כדי לחלץ 192-dim הטמיע.המודל טעון פעם ושימוש חוזר עבור כל הדוברים. ראה את CosyVoice3 מדריך לפרטים מלאים על דו-שיח ותגי רגש.

טיפים אודיו

חשוב

עבור Qwen3-TTS, שיבוט קול עובד עם base מודל בלבד – לא customVoiceCosyVoice3 קול שיבוט עובד עם מודל ברירת המחדל IndexTTS2 דורש צורך --voice-sampleכיום מפעילה סינתזה רק, ומקבלת בקרת רגש/סגנון אופציונלי.

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)
)

תגית: Audio Caching

שניהם שניהם synthesizeWithVoiceClone (x-vector) synthesizeWithVoiceCloneICL (ICL) מטמון את ההפרעה שלהם לפני עיבוד על פני שיחות על אותו מודל מקרה.הנתיב x-vector מקליד את דובר ECAPA-TDNN המטעה; נתיב ICL גם מכווץ את הנתיב ה- ICL מחלחל גם כן. Mimi פלט קודק encoder.The cache is content-addressed (hash של דגימות גלם + קצב דגימה) ו מחויב ל- LRU קטן (default) 4 ערכים, כל כך חוזרים דורות נגד אותו הפניה גלפור לדלג על האבטיח + קודר עובר ללא גידול זיכרון לא מרוכז.

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()