HTS音源训练教程

版权声明:所有文章都是自己编写整理,可以转载分享。--Zen in Zen https://blog.csdn.net/weixin_32393347/article/details/84038350

1.HTK安装方法

HTK:始于剑桥大学工程系,后被微软收购。版权属于微软的。一、下载安装包
下载两个安装包(下载链接)

分别是HTK-3.5.beta-2.tar.gz以及HDecode-3.5.beta-1.tar.gz

二、安装所需要的依赖库

1\. sudo apt-get install libx11-dev:i386

2\. sudo apt-get install libc6-dev:i386
附:
{
sudo apt-get install libx11-dev:i386 libx11-dev

sudo apt-get install g++-multilib

sudo apt-get install osspd
}

三、解压编译安装
1、解压

tar xzf HTK-3.5.beta-2.tar.gz
tar xzf HDecode-3.5.beta-1.tar.gz

2、编译
1> HTK 3.5带有三套Makefiles(在这里以 CPU (standard)为例),并且支持编译。

2> 在解压后的htk文件夹中分别查看HTKLib,HLMLib,HTKTools,HLMTools检查每个目录中的MakefileCPU文件,并更改CPU / GPU编译器和库的默认位置,以匹配我们将安装的HTK 3.5(可以不更改,我没有更改)。

3> 依次在HTKLib,HLMLib,HTKTools和HLMTools中编译MakefileCPU文件

make -f MakefileCPU install

4> 进入 HTKLVRec文件夹下,执行以下命令

1\. make -f MakefileCPU all
2\. make -f MakefileCPU install
四、将bin.cpu添加到环境变量当中去
1> 命令行输入   vim .bashrc

2>  按 i 进行编辑  输入      export PATH=$PATH:/htk3.5/bin.cpu(依据自己的盘符设置)

3> 按esc  输入:w 保存,然后输入  :q退出

4>  然后回到命令行输入   source .bashrc  使得改变生效

五、测试

在命令行随便输入HTK命令,例如HInit,成功啦

2.音源训练方法

需要环境:Debain/Ubuntu x86_64系统

2.1.环境配置

首先下载训练包:https://pan.baidu.com/s/1i6huEaD ,下载后解压
下载安装HTK
安装HTS API
安装SPTK
安装HTS_for_HTK
开始训练
HTS 训练包

 sudo apt-get install libx11-dev:i386
 sudo apt-get install libc6-dev:i386
 sudo apt-get install libx11-dev:i386 libx11-dev
 sudo apt-get install g++-multilib
 sudo apt-get install osspd
 sudo apt install git csh libx11-dev cmake gcc g++ automake

2.2 安装顺序

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

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

2.3训练自己音源库

然后打开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 m infile.xml
example $ sinsy -x /Sinsy-Remix/dic -m /Sinsy-Remix/nitech_jp_song070_f001.htsvoice -w c -o /sinsy_pro/XmltoLabel/hy_ch_s0037.lab -l m /sinsy_pro/xml_out/hy_ch_s0037.xml
-x 指定发音表所在文件夹

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

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

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

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

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

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

2.4 开始训练


开始训练,需要的时间较长(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小时训练完成

rawtowav

rawtowav [ fs(Hz) ] [ bit ] [ infile ] [ outfile ]

歌曲合成

$ sinsy  -w  j  -x  /Sinsy-Remix/dic  -m  /hts_train_song/HTS-train-demo/voices/qst001/ver1/nitech_jp_song070_f001.htsvoice -o /work/test.wav  /work/xml/csongdb_f00002_000.xml

docker 容器中中文出现乱码

1.  apt-get update && apt install vim
2.  vim /etc/profile
3. 然后将export LANG="C.UTF-8"加到最后一行
4. 然后重新加载
5.  source /etc/profile

关键点

  • label 生成
$ sinsy -x dic -m jp.htsvoice -w c -o output.lab -l m infile.xml #导出mono label
$ sinsy -x dic -m jp.htsvoice -w c -o output.lab -l t infile.xml #导出full label
  • DataSet
- nitech_jp_song070_f001_003.lab
-- DATASET = nitech_jp_song070 SPEAKER = f001
- hy_ch_s0027.lab
-- DATASET = hy SPEAKER = ch
  • configure
./configure --with-sptk-search-path=/usr/local/SPTK-3.9/bin \
                 --with-hts-search-path=/usr/local/HTS-2.3_for_HTK-3.4.1/bin \
                 --with-hts-engine-search-path=/usr/local/hts_engine_API-1.10/bin \
                 DATASET=hy SPEAKER=ch FULLCONTEXT_FORMAT=HTS_SVSS_CHN MGCORDER=49

整体步骤

  • spider 爬虫获取wav
  • wav转raw 获取raw
  • xml转label mono -l m
  • xml转label full -l t

猜你喜欢

转载自blog.csdn.net/weixin_32393347/article/details/84038350