Skip to content

速度·韵律调节

快速开始建议:先只调 speed

大多数情况下,speed 之外的参数保持默认听起来最自然

pitch_scaleintonation_scale 偏离 1.0 时会伴随轻微的音质下降。

"只是想稍微快一点/慢一点"的话,先只调 speed,其余的等到需要时再前往 高级参数 部分。

generate() 接受六个可调节语速·音高·韵律·变化度的关键字参数。

全部可省略,不传任何参数时使用训练时的默认值进行合成。

以下示例均使用 tsukuyomi_chan 说话人,朗读同一句话("今日はどんな国に辿り着くのでしょうか。新しい出会いが楽しみです。"),仅改变该参数。

参数行为与 HayaKoe 所 fork 的 Style-Bert-VITS2infer() 相同。

speed — 语速

以默认值 1.0 为基准,值越小越快,值越大越慢

内部机制是将 Duration Predictor 预测的音素时长直接乘以 speed,因此发音本身能保持良好。

つくよみちゃんspeed = 1.0默认
0:00 / 0:00

低于 0.8 时发音会模糊,超过 1.3 时更接近"拖沓"而非"慢"。

实际使用中 0.9 ~ 1.1 左右最自然。

python
speaker.generate(text, speed=0.9)   # 稍快
speaker.generate(text, speed=1.1)   # 稍慢

高级参数

从这里开始的设置在默认值下已经足够自然,但当需要精细调节时可以使用。

总览

参数默认值建议范围效果
pitch_scale1.00.95 ~ 1.05音高倍率。偏离 1.0 时会有轻微音质下降
intonation_scale1.00.8 ~ 1.3韵律起伏。偏离 1.0 时会有轻微音质下降
sdp_ratio0.20.0 ~ 0.5确定性 DP 与随机性 SDP 的混合比例
noise0.60.3 ~ 0.9语音变动性(音色随机性)
noise_w0.80.5 ~ 1.2发话节奏变动性(SDP 噪声)

建议每次只调整一个参数。

下面的示例为了让差异可以被听出,刻意将值推到了建议范围之外。

pitch_scale — 音高

整体提高或降低音高的简单倍率。

偏离 1.0 时会伴随轻微的音质下降,因此 建议调整幅度比其他参数更小

つくよみちゃんpitch_scale = 1.0默认
0:00 / 0:00

在 0.95 ~ 1.05 范围内说话人特征基本保持不变,但在极端值下会变成"另一个人"或音质明显下降。

python
speaker.generate(text, pitch_scale=1.05)

intonation_scale — 韵律起伏

调节韵律变化的"幅度"。

0.0 几乎是完全单调的机器人音,2.0 是夸张的朗读音。

pitch_scale 一样,偏离 1.0 时会有轻微的音质下降。

つくよみちゃんintonation_scale = 1.0默认
0:00 / 0:00

实际使用中 0.85 ~ 1.3 左右自然。

python
speaker.generate(text, intonation_scale=1.2)

sdp_ratio — 确定性/随机性时长预测混合

HayaKoe(和 Style-Bert-VITS2)同时使用两种时长预测器。

  • DP (Deterministic Duration Predictor) — 对相同文本始终给出相同时长
  • SDP (Stochastic Duration Predictor) — 每次调用给出略有不同的时长

sdp_ratio 是两个预测器的混合比例,0.0 表示仅用 DP,1.0 表示仅用 SDP

值越高,句子内的节奏起伏越大,同一文本多次运行时结果每次都不同。

つくよみちゃんsdp_ratio = 0.25DP 主导
0:00 / 0:00

对可复现性要求较高的服务(例如:字幕时间轴固定)中设为 0.0,一次性生成则 0.2 ~ 0.4 比较自然。

python
speaker.generate(text, sdp_ratio=0.0)   # 总是相同

noise / noise_w — 语音 · 节奏变动性

各自作用于不同阶段的噪声(不是音素本身的噪声)。

  • noise — 语音变动性。在 Flow 阶段控制音色的整体随机性。与 sdp_ratio 无关,始终有效。
  • noise_w — 发话节奏变动性。输入 SDP(随机性预测器)的噪声。sdp_ratio 为 0 时无效。

以下示例保持其余参数为默认值,仅改变该噪声。

つくよみちゃんnoise = 0.6默认
0:00 / 0:00
つくよみちゃんnoise_w = 0.8默认
0:00 / 0:00

大多数情况下保持默认值(0.60.8)最自然。

如果觉得"总是在抖动",试着稍微降低该侧噪声;如果觉得"太机械化",试着稍微提高。