תרגום מכונה · המקור באנגלית
שכפול קול
הקליקו כל קול מדגימה אודיו קצרה. IndexTTS2 מוסיף Native MLX הצצה אפסית עם רגש, קצב, ועצירה שולטות, לצד Qwen3-TTS ו CosyVoice3 רמקולים-encoder cloning
איך זה עובד
- Record או לספק דגימת אודיו הפניה של קול היעד
- Talker להטביע את מיצוי - דובר מעבד את אודיו ההתייחסות לתוך וקטור מטביעה תלת-ממדית קבוע
- Embeddding ההזרקה - הדובר הטמיע תנאים TTS מודל במהלך סינתזה
- Speech synthesis - מודל TTS יוצר דיבור שמתאים למאפיינים הקוליים של הדגימה ההתייחסות
מנועים
שיבוט קול זמין עם מספר מנועי TTS IndexTTS2 משתמשים אודיו ומיזוג סגנון מהיר; Qwen3-TTS ו CosyVoice3 משתמש ברמקולים:
F5-TTS ו Higgs TTS 3 לדלג על הדובר קודר לחלוטין: F5 תנאים על האמייל הגלם בתוספת התמליל שלה, Higgs
| מנוע מנוע מנוע | תגית: Encoder | Embedding | חזרה |
|---|---|---|---|
| Qwen3-TTS | ECAPA-TDNN | 1024-dim x-vector | MLX (GPU) |
| CosyVoice3 | CAM + | 192-dim | CoreML (Neural Engine) |
| IndexTTS2 | w2v-BERT + MaskGCT + CAMPPlus | קודים סמנטיים + חומצה מהירה + 192-dim סגנון | MLX (GPU) |
| F5-TTS | תגית: Raw Reference mel + תמליל | כתובת: 100-band | MLX (GPU) |
| Higgs TTS 3 | Higgs Codec encoder | 8 קודים | 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 ערוצים) |
| TDNN | Time Delay Neural Network (320 עד 128 ערוצים, גודל הקרנל 5) |
| בלוקים D-TDNN | 3 בלוקים מחוברים בצפיפות (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
| שלב השלב | תיאור תיאור |
|---|---|
| TDNN | Time Delay Neural Network (128 עד 512 ערוצים, גודל הקרנל 5) |
| SE-Res2Net בלוקים | 3 חוסם עם Squeeze-and-Exציטוט (512, dilation 2/3 / 4) |
| MFA | Multi-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 מדריך לפרטים מלאים על דו-שיח ותגי רגש.
טיפים אודיו
- Duration: 5 עד 15 שניות של דיבור עובד הכי טוב.קטעים קצרים עשויים לא ללכוד מספיק תכונות קוליות; קליפים ארוכים יותר מספקים החזרות מופחתות.
- Singleרמקול: ההתייחסות צריכה להכיל רק דובר אחד. אודיו רב-רמקולים יניב תוצאות בלתי צפויות.
- אודיו צלול: minimize רעש רקע, מוסיקה, ו reveration. השתמש speech שיפור מודול כדי לנקות אזכורים רועשים לפני שיבוט.
- דיבור טבעי: השתמש בדיבור שיחה, דיבור טבעי ולא בלחש, צועק או שירה.
עבור 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()