Fish Audio S2 Pro / Drama 3
توثق هذه الصفحة من Soniqo نموذج Fish Audio S2 Pro كما هو منفذ في speech-swift / speech-core. روابط Hugging Face موجودة أدناه بعد ملاحظات الدمج.
بطاقات الصفحة الرئيسية وقوائم الوثائق تشير إلى هذه الصفحة أولا؛ وتبقى روابط النموذج والحزم داخلها.
لمحة سريعة
| النموذج | Fish Audio S2 Pro |
|---|---|
| الدور | Experimental multilingual TTS with raw-reference cloning and style markers |
| Backend | MLX fp16 |
| الإخراج | 44.1 kHz mono PCM |
| اللغات | Multilingual |
| الرخصة | Research / non-commercial bundle; obtain Fish Audio license for commercial exposure |
| الحالة | Programmatic runtime; CLI integration is still pending |
| المصدر | Fish Audio S2 Pro |
| منتج Swift | FishAudioTTS |
| CLI / runtime | Programmatic runtime today; planned speech speak --engine fish-audio |
الاستخدام
المقتطف أدناه يطابق API أو الأمر الحالي في speech-swift.
import FishAudioTTS
let model = try await FishAudioTTSModel.fromPretrained()
let pcm = try await model.generate(
text: "आज मैं बहुत खुश हूँ। [excited]",
referenceAudioURL: URL(fileURLWithPath: "reference.wav"),
referenceText: "नमस्ते, यह संदर्भ आवाज है।"
)
روابط النموذج
ملاحظات التنفيذ
- Download uses the newer explicit byte-weighted file manifest, so progress reflects real transferred bytes across the multi-GB shards.
- Control markers include [pause], [emphasis], [laughing], [excited], [angry], [whisper], [screaming], [shouting], [surprised], and [sad].
- The runtime generates 10 DAC codebook rows, then decodes generated or reference-conditioned codebooks through FishAudioCodec.
- Current tests cover bundle loading, codebook generation, codec encode/decode, Hindi cloning, and ASR round-trip gates.
Fish Audio Drama 3
يتوفر دعم MLX أصلي تجريبي لنموذج Drama 3 عبر FishAudioDrama3Model. يستخدم نموذج MoE بحجم 35 مليار معلمة وانتباه هجين وبرج فك ترميز زمني وبرنامج الترميز Fish DAC لإنتاج صوت أحادي بتردد 44.1 kHz. اجتازت النسخة ذات 4 بت اختبارات الصوت والتعرف المستقل على الكلام للتوليد من النص واستنساخ الصوت المرجعي وإخراج CLI على Apple M5 Pro. لم تُختبر بعد نسختا 8 بت وBF16.
يحرر وضع balanced الافتراضي مخازن MLX غير المستخدمة عندما تتجاوز 512 MiB بين المراحل. ينطبق أيضًا حد الذاكرة المؤقتة المشترك طوال عمر النموذج مع حفظ ميزانيات المستدعي الأقل؛ ولا يحد أي منهما إجمالي ذاكرة العملية. يحمل --fish-drama3-memory-mode unrestricted أو memoryOptions: .unrestricted الأوزان مسبقًا ويتجاوز التنظيف بين المراحل، مع إبقاء حد عمر النموذج.
يؤجل التوليد من النص وحده تحميل 794.4 MiB من أوزان مُرمِّز الصوت المرجعي. تُحمَّل وتُحتفَظ بها عند أول ترميز مرجعي، لذا أبقِ codec.safetensors متاحًا حتى ذلك الحين. لا تحتاج الرموز المرجعية المحسوبة مسبقًا إلى المُرمِّز.
أرسل النص الكامل. يتطلب استنساخ الصوت تسجيلاً مرجعياً ونصه الدقيق. تدعم بيئة التشغيل وسوم المتحدثين 0–15 والتحكم بالمشاعر داخل النص. يتوفر بث PCM عبر generateStreaming وgenerateStream و--stream. تحتوي الدفعة افتراضياً على 3 إطارات من الترميز، أي نحو 139 مللي ثانية من الصوت. لا يتوفر بعد التقسيم التلقائي للنصوص الطويلة أو الإدخال المتدرج للنص. يؤدي بلوغ حد الإطارات إلى خطأ.
speech speak "Hello from Drama 3." --engine fish-drama3 --fish-drama3-bundle-dir /path/to/bundle -o hello.wav
speech speak "Hello from Drama 3." --engine fish-drama3 --stream --fish-drama3-chunk-frames 3 -o streamed.wav
speech speak "Hello in the reference voice." --engine fish-drama3 --voice-sample reference.wav --fish-drama3-reference-text "The exact reference transcript." --seed 42 -o cloned.wavimport FishAudioTTS
let model = try await FishAudioDrama3Model.fromBundle(bundleURL, memoryOptions: .balanced)
let pcm = try await model.generate(text: "Hello from Drama 3.", options: .init(seed: 42))
try await model.generateStreaming(text: "Hello from Drama 3.", options: .init(seed: 42, streamingChunkFrames: 3)) { chunk in
print(chunk.frameIndex, chunk.samples.count, chunk.isFinal)
}| الخيار | القيمة الافتراضية |
|---|---|
--fish-drama3-model-id | mlx-community/fish-audio-drama-3-4bit |
--fish-drama3-bundle-dir | — |
--fish-drama3-reference-text | — |
--fish-drama3-max-frames | 2048 |
--fish-drama3-temperature | 1 |
--fish-drama3-top-k | 30 |
--fish-drama3-top-p | 0.9 |
--voice-sample | — |
--seed | 0 |
--stream | false |
--fish-drama3-chunk-frames | 3 |
--fish-drama3-memory-mode | balanced |
تم البناء باستخدام Fish Audio. تحتفظ الحزم بملفي Community License وNOTICE.
قياس أداء نسخة 4 بت
| الوضع | أول PCM، مللي ثانية | زمن التوليد بعد الإحماء، ثانية | الصوت، ثانية | RTF | ذروة RSS، GiB | ذروة الذاكرة الفعلية، GiB |
|---|---|---|---|---|---|---|
| من النص فقط / كامل | — | 2.306 | 3.483 | 0.662 | 14.457 | 24.220 |
| استنساخ بمرجع صوتي / كامل | — | 2.681 | 3.204 | 0.837 | 15.064 | 24.789 |
| من النص فقط / بث | 275.3 | 2.529 | 3.483 | 0.726 | 15.571 | 22.321 |
| استنساخ بمرجع صوتي / بث | 730.2 | 2.860 | 3.204 | 0.893 | 14.676 | 23.885 |
Apple M5 Pro، ذاكرة 48 GiB، بناء release، 2026-10-17. وسيط ثلاث عمليات بعد الإحماء حتى اكتمال الموجة الصوتية. لا يشمل القياس تحميل النموذج وقراءة ملفات WAV وكتابتها؛ ويشمل الاستنساخ ترميز المرجع في كل مرة. RTF = زمن التوليد / مدة الصوت. التعرف المستقل على الكلام: نجحت 16/16 مقاطع دون أخطاء في الكلمات. استخدم الذاكرة الفعلية لتقدير سعة الذاكرة الموحدة. أول PCM هو أول استدعاء بث غير فارغ؛ لا توجد استدعاءات للدفعات في الوضع الكامل. تحتوي الدفعة الافتراضية على 139.3 مللي ثانية من الصوت. لم يُقَس بدء التشغيل المسموع.