嘎裂音合成脚本使用说明
脚本简介
该脚本用于对单词音频(.wav)中韵母部分(rhyme)施加“creak”效果,通过删除并插入不规则基频点,模拟声带不规则振动。主要处理流程如下:
读取文件:遍历指定文件夹,加载每个
.wav
音频及同名.TextGrid
标注。定位韵母区间:依据第 1 个 tier 的第 2 个 interval(标签
r
),获取韵母的起止时间。设置光标:在韵母区间的指定比例范围内(如 50%–70%),按百分比生成一系列时间点(cursor)。
基频删除与插入:删除原有 PitchTier 中对应时间点的基频,并插入自定义的新基频值,形成 Creak 效果。
重合重叠合成:创建 Manipulation 对象并调用 PSOLA 算法重合重叠合成语音。
强度缩放与输出:调整输出音频响度并写入指定目录。
标注文件要求
脚本依赖于正确的 TextGrid 标注,请按以下方式准备:
在 Praat 中创建第 1 个 tier(Tier 1),包含两个 interval:
Interval 1:onset 部分,标签可任选(如
o
或onset
);脚本不依赖该 label 值,仅提取时间Interval 2:rhyme 部分,脚本通过
Get label of interval: 1, 2
读取该标签,并在脚本中测试:
确保每个 TextGrid 文件与音频文件同名(仅后缀不同),以便脚本自动匹配加载
1 文件与路径参数
sound_directory:修改为存放
.wav
文件的路径。sound_file_extension:修改为音频文件的后缀(含“.”)。
textGrid_directory:修改为存放标注文件的路径。
textGrid_file_extension:修改为标注文件后缀(含“.”)。
end_directory:修改为保存处理结果的路径。
2 Manipulation 对象参数
创建 Manipulation 用于 PSOLA:
soundManipulation = To Manipulation... 0.01 75 600
第一个参数
0.01
:时间步长(秒),影响处理粒度与速度。第二个参数
75
:最低基频阈值(Hz),低于该值的周期将被忽略。第三个参数
600
:最高基频阈值(Hz),高于该值的周期将被忽略。
3 Creak 时间范围与粒度
# 获取韵母区间
startSeg = Get starting point: 1, 2
endSeg = Get end point: 1, 2
durSeg = endSeg - startSeg
# 定义比例范围(50%–70%)
cursor_50 = startSeg + durSeg * 0.50
cursor_51 = startSeg + durSeg * 0.51
…
cursor_70 = startSeg + durSeg * 0.70
起始比例(当前为
0.50
)与结束比例(当前为0.70
)决定 Creak 效果生效的时间段。步进粒度:每段增量
0.01
(1%),可改为0.02
、0.05
等。
修改建议:若想更长或更短的 Creak 效果,可更改
0.50
/0.70
;若想粗/细粒度,可增删cursor_xx
行并调整乘数。
4 基频点操作序列
4.1 删除原有基频点
Remove point... cursor_50
Remove point... cursor_51
…
Remove point... cursor_70
对应关系:需与「3. Creak 时间范围与粒度」中定义的
cursor_xx
数量一致。
4.2 插入新基频点
Add point... cursor_50 90
Add point... cursor_51 91
…
Add point... cursor_70 50
第二参数为待插入的基频值 (Hz)。
当前示例:90→100→50 Hz 的波形,制造上升再下降的 Creak 效果。
修改建议:调整各
Add point
行的频率值序列,以改变 Creak 强度、形状(如平缓、剧烈或多段波动)。
5 强度缩放参数
Scale intensity... 60.0
参数
60.0
:音强 (dB)。