Fish Audio S2 Pro / Drama 3

此 Soniqo 页面记录本地 speech-swift / speech-core 实现中的 Fish Audio S2 Pro。Hugging Face 包链接放在集成说明之后。

先进入站内页面

首页卡片和文档菜单先指向这里;源模型和权重包链接仍在本页提供。

概览

模型Fish Audio S2 Pro
用途Experimental multilingual TTS with raw-reference cloning and style markers
后端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 / 运行时Programmatic runtime today; planned speech speak --engine fish-audio

使用

下面的片段对应当前 speech-swift 仓库暴露的 API 或命令。

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

Drama 3 的实验性原生 MLX 支持通过 FishAudioDrama3Model 提供。350 亿参数的混合注意力 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.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 构建。模型包保留社区许可证和 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,发布构建,2026-10-17。数据为三次预热后完整波形生成的中位数,不包含模型加载和 WAV 文件读写;克隆每次均包含参考音频编码。RTF = 合成时长 / 音频时长。独立 ASR:16/16 段通过,词错误数为零。统一内存容量规划应参考物理内存占用。 首个 PCM 指首次收到非空流式音频块;完整波形模式没有分块回调。默认每块包含 139.3 毫秒音频。未测量实际播放起始时间。