Fish Audio S2 Pro / Drama 3
यह Soniqo पेज स्थानीय speech-swift / speech-core implementation में Fish Audio S2 Pro को दस्तावेज़ करता है। Hugging Face bundle links integration notes के बाद दिए गए हैं।
Landing cards और docs menus पहले इसी पेज पर आते हैं; source model और bundle links यहीं उपलब्ध रहते हैं।
सारांश
| मॉडल | Fish Audio S2 Pro |
|---|---|
| भूमिका | Experimental multilingual TTS with raw-reference cloning and style markers |
| Backend | MLX fp16 |
| Output | 44.1 kHz mono PCM |
| भाषाएँ | Multilingual |
| लाइसेंस | Research / non-commercial bundle; obtain Fish Audio license for commercial exposure |
| स्थिति | Programmatic runtime; CLI integration is still pending |
| Source | Fish Audio S2 Pro |
| Swift product | FishAudioTTS |
| CLI / runtime | Programmatic runtime today; planned speech speak --engine fish-audio |
उपयोग
नीचे का snippet मौजूदा speech-swift API या command से मेल खाता है।
import FishAudioTTS
let model = try await FishAudioTTSModel.fromPretrained()
let pcm = try await model.generate(
text: "आज मैं बहुत खुश हूँ। [excited]",
referenceAudioURL: URL(fileURLWithPath: "reference.wav"),
referenceText: "नमस्ते, यह संदर्भ आवाज है।"
)
मॉडल लिंक
implementation notes
- 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
Drama 3 का प्रयोगात्मक मूल MLX समर्थन FishAudioDrama3Model से उपलब्ध है। 35 अरब पैरामीटर वाला मिश्रित अटेंशन MoE मॉडल, समय-आधारित ऑडियो टावर और Fish DAC कोडेक 44.1 kHz मोनो ऑडियो बनाते हैं। 4-बिट चेकपॉइंट ने Apple M5 Pro पर केवल टेक्स्ट से ऑडियो, संदर्भ आवाज़ क्लोनिंग और CLI आउटपुट के वेवफ़ॉर्म तथा स्वतंत्र ASR परीक्षण पास किए। 8-बिट और BF16 अभी सत्यापित नहीं हैं।
डिफ़ॉल्ट balanced मोड चरणों के बीच 512 MiB से अधिक निष्क्रिय MLX बफ़र साफ करता है। मॉडल के जीवनकाल में साझा कैश सीमा भी लागू रहती है और कॉलर का कम बजट सुरक्षित रहता है; दोनों में से कोई भी प्रक्रिया की कुल मेमोरी सीमित नहीं करता। --fish-drama3-memory-mode unrestricted या memoryOptions: .unrestricted वेट पहले लोड करता है और चरणों की सफाई छोड़ता है, लेकिन जीवनकाल की सीमा बनाए रखता है।
केवल टेक्स्ट से ऑडियो बनाते समय संदर्भ एनकोडर के 794.4 MiB वज़न बाद में लोड होते हैं। पहला संदर्भ एनकोडिंग इन्हें लोड करके रखता है, इसलिए तब तक codec.safetensors उपलब्ध रखें। पहले से निकाले गए संदर्भ कोड को एनकोडर की आवश्यकता नहीं होती।
पूरा इनपुट टेक्स्ट दें। आवाज़ क्लोन करने के लिए संदर्भ रिकॉर्डिंग और उसका सही प्रतिलेख आवश्यक है। वक्ता टैग 0–15 और टेक्स्ट में भावनात्मक नियंत्रण समर्थित हैं। generateStreaming, generateStream और --stream से PCM स्ट्रीमिंग उपलब्ध है। डिफ़ॉल्ट चंक में 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, ms | वार्म संश्लेषण, सेकंड | ऑडियो, सेकंड | 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, रिलीज़ बिल्ड, 2026-10-17। तीन वार्म कॉल का माध्यिका मान; पूरी वेवफ़ॉर्म बनने तक का समय। मॉडल लोडिंग और WAV फ़ाइल इनपुट/आउटपुट शामिल नहीं हैं; क्लोनिंग में हर कॉल पर संदर्भ एन्कोडिंग शामिल है। RTF = संश्लेषण समय / ऑडियो अवधि। स्वतंत्र ASR: 16/16 क्लिप पास, शब्द त्रुटियाँ शून्य। यूनिफ़ाइड मेमोरी की योजना के लिए भौतिक मेमोरी का उपयोग करें। पहला PCM पहला गैर-खाली स्ट्रीमिंग कॉलबैक है; पूरे ऑडियो मोड में चंक कॉलबैक नहीं होते। डिफ़ॉल्ट चंक में 139.3 मिलीसेकंड ऑडियो है। सुनाई देने वाले प्लेबैक की शुरुआत नहीं मापी गई।