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
BackendMLX fp16
Output44.1 kHz mono PCM
ภาษาMultilingual
LicenseResearch / non-commercial bundle; obtain Fish Audio license for commercial exposure
สถานะProgrammatic runtime; CLI integration is still pending
SourceFish Audio S2 Pro
Swift productFishAudioTTS
CLI / runtimeProgrammatic 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

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.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 แรก มิลลิวินาทีเวลาสังเคราะห์หลังอุ่นเครื่อง วินาทีเสียง วินาทีRTFRSS สูงสุด 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 = เวลาสังเคราะห์ / ความยาวเสียง ASR อิสระผ่าน 16/16 คลิปโดยไม่มีคำผิด ใช้หน่วยความจำกายภาพเพื่อวางแผนขนาดหน่วยความจำรวม PCM แรกหมายถึงคอลแบ็กสตรีมครั้งแรกที่มีข้อมูล โหมดสร้างทั้งหมดไม่มีคอลแบ็กแต่ละชังก์ ชังก์เริ่มต้นมีเสียง 139.3 มิลลิวินาที ไม่ได้วัดเวลาเริ่มเล่นเสียงจริง