Fish Audio S2 Pro / Drama 3
หน้านี้ของ Soniqo อธิบาย Fish Audio S2 Pro ตาม implementation ใน speech-swift / speech-core ส่วนลิงก์ Hugging Face อยู่ใต้หมายเหตุการใช้งาน
การ์ดหน้าแรกและเมนูเอกสารจะชี้มาที่หน้านี้ก่อน ส่วนลิงก์ไปยัง source model และ bundle ยังอยู่ในหน้านี้
ภาพรวม
| โมเดล | Fish Audio S2 Pro |
|---|---|
| บทบาท | Experimental multilingual TTS with raw-reference cloning and style markers |
| Backend | MLX fp16 |
| Output | 44.1 kHz mono PCM |
| ภาษา | Multilingual |
| License | 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 ด้านล่างตรงกับ 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: "नमस्ते, यह संदर्भ आवाज है।"
)
ลิงก์โมเดล
หมายเหตุ implementation
- 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 โมเดล MoE ขนาด 35 พันล้านพารามิเตอร์พร้อม attention แบบผสม ตัวถอดรหัสเสียงตามเวลา และตัวแปลงสัญญาณ Fish DAC สร้างเสียงโมโน 44.1 kHz โมเดล 4 บิตผ่านการตรวจสอบรูปคลื่นและ ASR อิสระสำหรับการสร้างเสียงจากข้อความ การโคลนเสียงอ้างอิง และเอาต์พุต 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 = เวลาสังเคราะห์ / ความยาวเสียง ASR อิสระผ่าน 16/16 คลิปโดยไม่มีคำผิด ใช้หน่วยความจำกายภาพเพื่อวางแผนขนาดหน่วยความจำรวม PCM แรกหมายถึงคอลแบ็กสตรีมครั้งแรกที่มีข้อมูล โหมดสร้างทั้งหมดไม่มีคอลแบ็กแต่ละชังก์ ชังก์เริ่มต้นมีเสียง 139.3 มิลลิวินาที ไม่ได้วัดเวลาเริ่มเล่นเสียงจริง