S2 tags 介绍: Fish Audio S2! Fine-Grained AI Voice Control at the Word Level – Fish Audio Blog
Shell 脚本控制:
# text2semantic/inference.py Options:
--text TEXT
--prompt-text TEXT
--prompt-tokens PATH
--prompt-audio PATH
--output PATH
--num-samples INTEGER
--max-new-tokens INTEGER
--top-p FLOAT
--top-k INTEGER
--temperature FLOAT
--checkpoint-path PATH
--device TEXT
--compile / --no-compile
--seed INTEGER
--half / --no-half
--iterative-prompt / --no-iterative-prompt
--chunk-length INTEGER
--output-dir PATH
--help
# fish_speech/models/dac/inference.py Options:
-i, --input-path PATH
-o, --output-path PATH
--config-name TEXT
--checkpoint-path TEXT
-d, --device TEXT
--help Show this message and exit.
# step 1:
cd /home/ziwen/Apps/fish-speech/fish-speech
source .venv/bin/activate
python fish_speech/models/dac/inference.py --input-path /home/ziwen/Apps/fish-speech/fish-speech/run_env_ziwen/demo_input/english_male.mp3 --checkpoint-path "checkpoints/s2-pro/codec.pth" --output-path /home/ziwen/Apps/fish-speech/fish-speech/run_env_ziwen/demo_output/fake_english_male.wav
# step 2:
cd /home/ziwen/Apps/fish-speech/fish-speech
source .venv/bin/activate
python fish_speech/models/text2semantic/inference.py --text "[laugh]This is my first auto generated sound. Made by fish audo." --prompt-text "The morning brings little comfort - a handful of dried berries, a cup of water from yesterday's rain. The wooden bowl is cracked but clean, like everything else here. Sometimes, watching the runrise throuth the window's dusty pane feels like a feast itself." --prompt-tokens /home/ziwen/Apps/fish-speech/fish-speech/run_env_ziwen/demo_output/fake_english_male.npy --prompt-audio /home/ziwen/Apps/fish-speech/fish-speech/run_env_ziwen/demo_output/fake_english_male.wav --device "cuda" --chunk-length 1000 --max-new-tokens 2048 --output-dir /home/ziwen/Apps/fish-speech/fish-speech/run_env_ziwen/VQGAN_files/
# step 3:
cd /home/ziwen/Apps/fish-speech/fish-speech
source .venv/bin/activate
python fish_speech/models/dac/inference.py --input-path "/home/ziwen/Apps/fish-speech/fish-speech/run_env_ziwen/VQGAN_files/codes_0.npy" --output-path "/home/ziwen/Apps/fish-speech/fish-speech/run_env_ziwen/tmp_generated_files/step3.wav" --device "cuda" --checkpoint-path "checkpoints/s2-pro/codec.pth"
# combine step 2 and step 3:
cd /home/ziwen/Apps/fish-speech/fish-speech
source .venv/bin/activate
python fish_speech/models/text2semantic/inference.py --text "[speaking slowly, almost hesitant]This is my first auto generated sound. Made by fish audo." --prompt-text "The morning brings little comfort - a handful of dried berries, a cup of water from yesterday's rain. The wooden bowl is cracked but clean, like everything else here. Sometimes, watching the runrise throuth the window's dusty pane feels like a feast itself." --prompt-tokens /home/ziwen/Apps/fish-speech/fish-speech/run_env_ziwen/demo_output/fake_english_male.npy --prompt-audio /home/ziwen/Apps/fish-speech/fish-speech/run_env_ziwen/demo_output/fake_english_male.wav --device "cuda" --chunk-length 1000 --max-new-tokens 2048 --output /home/ziwen/Apps/fish-speech/fish-speech/run_env_ziwen/tmp_generated_files/step_combined.wav
一些参数的解释:
在 Fish Audio(特别是其最新的 S2 模型,参考论文 arXiv:2603.08823)中,由于其采用了类似于大型语言模型(LLM)的双自回归架构(Dual-Autoregressive Architecture),文本到语音(TTS)的生成本质上是预测离散音频 Token 的过程。
因此,它的推理参数不仅包含传统的音频设置,还包含了类似大模型的解码生成(Decoding)参数。以下是对你提供的各个参数的详细解释以及调整策略:
1. 文本与分块控制 (Text & Chunking)
chunk_length: 1000- 含义:单次处理的文本块长度(字符数)。为了降低延迟和显存占用,长文本合成会被切分成多个小块(Chunk)进行处理。
- 如何调整:
- 注意:Fish Audio 官方公共 API 通常建议将此值限制在 100~300 之间。设为 1000 通常适用于本地拥有大显存(如 24GB+ VRAM)的非流式部署。
- 调小(例如 150-250):如果你在做实时对话机器人,需要极低的“首字出声延迟(Time-to-first-audio,可降至 100ms)”,或者为了降低显存占用,请将其调小。
- 调大:提供更长的上下文,使得较长段落的情绪和语调更加连贯。如果发现生成的语音在某句话中间被极其突兀地截断并换气,请增大该值。
normalize: false- 含义:文本归一化开关。决定是否在送入合成前让模型自动清理文本(如将数字“123”转为“一百二十三”,处理特殊符号或缩写)。
- 如何调整:
- 如果你输入的文本是未经预处理的原始网页/对话文本,建议设为
true,防止模型遇到特殊符号时读错或崩溃。 - 如果你已经有自己的文本清洗流程,或者你想利用 Fish Audio S2 强大的**标签内联控制(Inline Control)**功能(例如在文本中插入
[laugh],[whispers],[pitch up]等自然语言指令来精确控制情绪),请务必保持为false,以免这些指令标签被当做无意义符号清除。
- 如果你输入的文本是未经预处理的原始网页/对话文本,建议设为
2. 生成与解码参数 (Decoding Parameters)
由于 Fish Audio 使用自回归模型预测声音 Token,以下三个参数直接决定了声音的“表现力”和“稳定性”:
temperature: 0.9- 含义:采样温度。控制生成的随机性和创造力。值越低,概率最高的 Token 越容易被选中(越保守);值越高,声音的随机变化越大。
- 如何调整:
- 调高(0.8 – 1.0):当前
0.9偏向高表现力设定。声音会更具情感、抑扬顿挫更自然,适合讲故事或需要强烈情绪起伏的场景。 - 调低(0.1 – 0.5):如果模型出现乱发音、突然大叫或破音等幻觉(Hallucinations),降低温度可以让声音变得非常稳定,但听起来可能像没有感情的“棒读”机器人。
- 调高(0.8 – 1.0):当前
top_p: 0.9- 含义:核采样(Nucleus Sampling)阈值。模型只会从累计概率达到
top_p的候选池中进行选择,过滤掉极其低概率(大概率是错误发音)的离谱选项。 - 如何调整:通常与
temperature配合调整。0.8 - 0.9可以在保持发音正确的同时引入足够的声音细节变化。如果依然出现个别口齿不清或发错音的情况,可适当降低至0.7 - 0.8。
- 含义:核采样(Nucleus Sampling)阈值。模型只会从累计概率达到
repetition_penalty: 1.05- 含义:重复惩罚机制。防止模型像复读机一样陷入死循环。数值大于 1.0 表示对重复发音的 Token 进行惩罚。
- 如何调整:
- 如果生成的语音出现结巴或电音卡顿(一直重复发某一个字的音),请调高(例如
1.1或1.2)。 - 如果发现模型跳字、漏字,说明惩罚过重导致模型“不敢”说正常的叠词或常用字,请将其调低(接近
1.0或当前设定的1.05通常是一个很好的平衡值)。
- 如果生成的语音出现结巴或电音卡顿(一直重复发某一个字的音),请调高(例如
max_new_tokens: 2048- 含义:模型在当前的一个文本块(Chunk)内,最多允许生成的音频 Token 数量。
- 如何调整:由于你的
chunk_length设定得非常大(1000),那么音频 Token 的消耗量也会很大。如果遇到**一句话没说完就戛然而止(静音)**的情况,说明达到了 Token 上限,需要将其进一步调高。反之,如果出现长时间的无意义环境音或尾音拖长,可适当调低作为强制截断的保险手段。
3. 音频输出与性能控制 (Output & Performance)
format: “mp3”- 含义:导出的音频格式。
- 如何调整:
"mp3":适合大多数通用场景,体积小巧。"wav"或"pcm":无损未压缩格式,适合后续需要导入剪辑软件进行二次混音的高要求场景。"opus":如果你在开发实时语音对话应用(Streaming),Opus 具有最低的延迟和极优的带宽利用率。
latency: “normal”- 含义:延迟模式策略。决定推理引擎在音频质量和计算速度之间的权衡。
- 如何调整:
"normal":标准模式,追求最高的声音逼真度和细节表现。"balanced"或"low":降低内部处理的复杂度或批量策略,以便更快地输出第一段音频,适合实时交互。
references: []- 含义:参考音频列表,用于零样本声音克隆(Zero-shot Voice Cloning)。
- 如何调整:
- 当前为空数组
[],意味着模型将使用默认预训练的音色进行发声。 - 如果你想让 AI 模仿某个特定的声音,可以在此处传入该人物的一段纯净音频(建议 10~30 秒的高质量 WAV)。Fish Audio S2 可以直接提取其声纹、情绪色彩甚至是口音习惯进行复刻。
- 当前为空数组
💡 核心调参建议总结:
- 追求生动自然:保持高
temperature(0.8-0.9) 和高top_p(0.8-0.9),允许模型自由发挥情感。 - 遭遇合成崩溃/乱读/破音:立即降低
temperature(例如降至 0.6),并将repetition_penalty微微提高到 1.15,并考虑开启normalize。

发表回复
要发表评论,您必须先登录。