mcpField
F
fish-audio-tts

fish-audio-tts

github.com/calesthio创意与媒体72.7k632 次安装今天更新
代码仓库

关于 fish-audio-tts

fish-audio-tts 是用于通过 fish.audio 生成旁白音频的 OpenMontage 技能,支持选择后端模型和复用已创建的声音模型,并可调整语音表现与音频输出。

主要功能

  1. 01将文本生成为语音
  2. 02选择 fish.audio 后端模型
  3. 03通过 reference_id 复用声音
  4. 04调整延迟、韵律和音频输出
  5. 05在 S2 模型中使用内嵌情绪标签

适用场景

  1. 01为视频项目生成旁白音频
  2. 02在生成完整旁白前试听选定声音
  3. 03使用 S2 情绪标签生成富有表现力的语音

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/calesthio/openmontage --skill fish-audio-tts

安装后在 Claude Code 中输入/fish-audio-tts确认已加载。

详细介绍

fish.audio TTS

需要在 .env 中设置 FISH_AUDIO_API_KEY(可在 https://fish.audio/go-api/api-keys/ 创建)。 在 fish.audio playground 中创建语音模型,并将其 id 作为 reference_id 传入,即可复用克隆的语音。

当前 API

单次同步调用,返回原始音频字节:

POST https://api.fish.audio/v1/tts
Authorization: Bearer ${FISH_AUDIO_API_KEY}
Content-Type: application/json
model: <backend model>     # HTTP header selects the backend, e.g. s1

后端模型通过 model HTTP header 选择,而不是通过请求体字段选择。在 OpenMontage 中,这对应工具的 model 输入。

后端模型

model 为必填项——没有默认值。请传入以下其中一个:

  • s2.1-pro — 最新一代。质量最佳:支持内联情绪标签、80 多种语言和多说话人。适用于主打旁白。
  • s2.1-pro-free — 免费体验 s2.1-pro 的促销访问权限。仅在促销期内,草稿、样本和验证运行费用为 $0。根据 fish.audio 公告:免费期截至 2026 年 8 月 31 日,受公平使用政策限制,不保证 SLA/延迟,可能保留请求,且限制商业用途。切勿通过此模型生成生产内容或客户旁白。
  • s2-pro — S2 的第一代产品。质量稳定、音质出色,并支持情绪标签。
  • s1 — 上一代旗舰模型。为兼容现有集成而保留。

费用按输入文本的 UTF-8 字节数 计费(而非字符数)。相同可见长度的中文、日文、韩文(CJK)文本和表情符号,费用是 ASCII 字符的 3–4 倍。当前标价:s1 / s2-pro / s2.1-pro = 每 1M 字节 $15,s2.1-pro-free = 仅在促销期内 $0(2026 年 8 月 31 日后,工具的 estimate_cost() 将切换为付费 s2.1-pro 费率)。进行大批量处理前,请在 https://docs.fish.audio/developer-guide/models-pricing/pricing-and-rate-limits 核实当前价格。

内联情绪标签(仅限 S2 模型)

s2-pro / s2.1-pro / s2.1-pro-free 会解析嵌入文本中的内联情绪标签:

  • [laugh]、[whispers] 等标签会改变句子中途的表达方式。
  • 示例:"That's hilarious [laugh] but let me explain seriously."
  • s1 不会解析情绪标签——可能会将其作为普通文本读出,因此使用 s1 时请删除这些标签。

语音选择(reference_id)

  • 在 fish.audio playground 中创建或选择语音,然后复制其模型 id。
  • 将其作为 reference_id 传入。如果未提供 reference_id,则选择器通用的 voice_id 会作为别名接受。
  • 如果未提供 reference_id,fish.audio 会使用所选模型的默认语音。

此工具不支持即时内联克隆(每次请求上传参考音频和文本)——请先在 playground 中创建语音模型。

OpenMontage 用法

使用 TTS 选择器生成:

from tools.audio.tts_selector import TTSSelector

result = TTSSelector().execute({
    "preferred_provider": "fish_audio",
    "text": "Here's why compound interest quietly beats every get-rich-quick scheme.",
    "model": "s1",
    "reference_id": "<playground voice model id>",
    "output_path": "projects/my-video/assets/audio/narration.mp3",
})

或直接调用提供方:

from tools.audio.fish_audio_tts import FishAudioTTS

result = FishAudioTTS().execute({
    "text": "Short sample line for approval.",
    "model": "s1",
    "reference_id": "<playground voice model id>",
    "output_path": "projects/my-video/assets/audio/fish_sample.mp3",
})

提供方会将音频写入 output_path,并返回 data.output 以及解析后的 model 和 reference_id。

质量与延迟调优

  • latency:normal(默认,质量最佳)、balanced(稍快)或 low(最快,但会略微损失质量)。
  • normalize:默认为 true;请保持开启,以便自然地读出数字、日期和货币。
  • prosody:可选的 { "speed": 1.0, "volume": 0 },用于微调语速和音量。
  • mp3_bitrate:128 是不错的默认值;若混音中音乐背景占比较大,可提高到 192。
  • temperature:默认为 0.7。提高到接近 0.9 可让朗读更富表现力(使用情绪标签时推荐);调低则可让表达更稳定、更可预测。
  • top_p / repetition_penalty:通常保持默认值(0.7 / 1.2)。

推荐工作流

  1. 正式付费生成旁白前,先使用选定的 model + reference_id 生成 10–15 秒的样本。
  2. 请用户确认语音的自然度、情绪和语速。
  3. 仅在获得批准后生成完整旁白。
  4. 对于注重成本的批量处理或本地化变体,可先用 s2.1-pro-free 制作原型(仅促销期内 $0;仅限非商业草稿),再用 s2.1-pro 生成最终版本。

故障排查

  • 401 Unauthorized:FISH_AUDIO_API_KEY 错误或缺失。
  • 402 / 付款错误:账户余额已用尽。
  • 404 / 语音无效:reference_id 错误或不属于此账户。
  • 音频为空或过短:检查 text 是否非空,以及 normalize 是否移除了全部输入内容。

安全

切勿将 API 密钥打印或写入日志、元数据、补丁或项目产物中。.env.example 只能包含空的变量名。

评论

支持 Markdown