HTS Sinsy音源库训练方法

最近看了些方法,整理了下。

需要环境:Debain/Ubuntu x86_64系统

首先下载训练包:https://pan.baidu.com/s/1i6huEaD

下载后解压

先编译hts_engine_API,然后编译SPTK和HTS_for_HTK.编译时需要csh和libx11,记得安装。apt里就有

编译hts_engine_API和SPTK后一定要make install,HTS_for_HTK可以不用install

然后打开hts-train-demo文件夹,打开data,替换相应文件

raw文件夹为音频文件,格式为:480000Hz Little Endian 跳过前2位

可以使用ffmpeg进行转换:

ffmpeg -i input.wav -f s16le -ar 48000 -acodec pcm_s16le output.raw

label/full放入音乐的完整label,可以用Sinsy-remix导出

sinsy -x dic -m jp.htsvoice -w c -o output.lab -l infile.xml

-x 指定发音表所在文件夹

-m 指定任意一个htsvoice(不影响输出结果,必须指定一个htsvoice是bug)

-w 指定语言,j代表日语,c代表中文

注:如果需要使用其他语言进行训练,需要更改question文件(只需更改开头的音素不封,也就是LL-Phone到RR-Phone的区域),具体请查看:关于HTS问题集(question)的解析(一)

label/mono指定的歌词和对应时间,元音和辅音要拆开来,时间一定要准确,否则影响音源合成效果

注意:pau这个音的作用类似UTAU里的R,代表无声的范围,不能缺少。sil是用来填补曲子还没开始前的“上一个音”的空位

具体怎么写可以参照官方的例子


开始训练,需要的时间较长(6-12小时),建议在screen里运行

screen -S train


配置时一定要指定HTK的位置

./configure --with-hts-search-path=../HTS_for_HTK/htk/HTKTools

然后就可以开始make了

make all


如果训练时,perl提示找不到对应类,请手动执行下面的指令:

perl scripts/Training.pl 当前的绝对路径/scripts/Config.pm


大约6小时训练完成

训练结果在voice文件夹内

猜你喜欢

转载自blog.csdn.net/at13358172372/article/details/79114462