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
BackendMLX 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
منتج SwiftFishAudioTTS
CLI / runtimeProgrammatic 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: "नमस्ते, यह संदर्भ आवाज है।"
)

روابط النموذج

ملاحظات التنفيذ

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.wav
import 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-idmlx-community/fish-audio-drama-3-4bit
--fish-drama3-bundle-dir—
--fish-drama3-reference-text—
--fish-drama3-max-frames2048
--fish-drama3-temperature1
--fish-drama3-top-k30
--fish-drama3-top-p0.9
--voice-sample—
--seed0
--streamfalse
--fish-drama3-chunk-frames3
--fish-drama3-memory-modebalanced

تم البناء باستخدام Fish Audio. تحتفظ الحزم بملفي Community License وNOTICE.

قياس أداء نسخة 4 بت

الوضعأول PCM، مللي ثانيةزمن التوليد بعد الإحماء، ثانيةالصوت، ثانيةRTFذروة RSS، GiBذروة الذاكرة الفعلية، GiB
من النص فقط / كامل—2.3063.4830.66214.45724.220
استنساخ بمرجع صوتي / كامل—2.6813.2040.83715.06424.789
من النص فقط / بث275.32.5293.4830.72615.57122.321
استنساخ بمرجع صوتي / بث730.22.8603.2040.89314.67623.885

Apple M5 Pro، ذاكرة 48 GiB، بناء release، 2026-10-17. وسيط ثلاث عمليات بعد الإحماء حتى اكتمال الموجة الصوتية. لا يشمل القياس تحميل النموذج وقراءة ملفات WAV وكتابتها؛ ويشمل الاستنساخ ترميز المرجع في كل مرة. RTF = زمن التوليد / مدة الصوت. التعرف المستقل على الكلام: نجحت 16/16 مقاطع دون أخطاء في الكلمات. استخدم الذاكرة الفعلية لتقدير سعة الذاكرة الموحدة. أول PCM هو أول استدعاء بث غير فارغ؛ لا توجد استدعاءات للدفعات في الوضع الكامل. تحتوي الدفعة الافتراضية على 139.3 مللي ثانية من الصوت. لم يُقَس بدء التشغيل المسموع.