HTS语音合成训练(一)-DEMO环境搭建
HTS语音合成训练(一)-DEMO环境搭建
-
项目安装环境:
-
ubuntu14.04 32位
由于64位系统环境下问题较多,建议使用32位系统进行安装
-
HTK-3.4.1
-
HDecode-3.4.1
-
HTS-2.3_for_HTK-3.4.1
-
SPTK-3.11
-
HTS_engine1.10
-
festival2.4
-
speech_tools
-
ActiveTcl8.4
-
一、安装HTK工具包
1.1.简介
HMM工具包(HMM Tool Kit,HTK)(http://htk.eng.cam.ac.uk/) 是由剑桥大学工程学院机器学习实验室开发的用于自动语音识别的工具包。其中包括基于K均值的HMM模型初始化(HInit)、HMM孤立参数估计(HRest)、HMM上下文参数估计(HERest)和模型状态聚类与模型编辑(HHEd)等工具。
1.2.安装
-
安装HTK-3.4.1和HDecode-3.4.1以及HTS-2.3_for_HTK-3.4.1
-
HTK-3.4.1下载地址:
- HTK-3.4.1
-
HDecode-3.4.1下载地址:
- HDecode-3.4.1
-
HTS-2.3_for_HTK-3.4.1下载地址:
- HTS-2.3_for_HTK-3.4.1
-
-
解压压缩文件
sudo tar -zxvf HTK-3.4.1.tar.gz sudo tar -zxvf HDecode-3.4.1.tar.gz sudo tar -xjf HTS-2.3_for_HTK-3.4.1.tar.bz2 # 解压缩后将patch文件放到htk文件夹下 sudo mv HTS-2.3_for_HTK-3.4.1.patch ./htk/
-
应用下载的补丁HTS-2.3_for_HTK-3.4.1.patch
cd htk sudo patch -p1 -d . < HTS-2.3_for_HTK-3.4.1.patch
-
配置环境
- 环境的配置相对复杂些,包括以下两项:
- libx11-dev:i386,libx11-dev,g++-multilib,osspd等HTK安装必要的包
- 符合要求的gcc版本
a. 使用apt-get命令安装必要的包文件
# 这里笔者用的Ubuntu的bionic版本 # 查询系统版本 sudo lsb_release -a # 保证系统中有HTK依赖版本libx11-dev:i386,libx11-dev,g++-multilib,osspd等 sudo apt-get install libx11-dev:i386 libx11-dev lib32ncurses5 lib32z1 build-essential xorg-dev g++-multilib osspd
-
可能会遇到问题 E: Unable to locate package libx11-dev:i386,这是安装源有问题,最好修改为官方的安装源进行安装,别的安装源可能没有修复,导致安装失败
修改安装源博客地址
b. 安装符合要求的gcc版本,版本最好低于5.1,这里使用笔者使用4.8版本进行安装
? HTK gcc版本问题博客地址
# update-alternatives的原理就是增加一层软连接,当使用命令更改版本时就更改软连接指向 # 查看gcc的软连接 ll /usr/bin/gcc* # 显示update-alternatives管理的版本 update-alternatives --display gcc # 添加对gcc-4.8的管理 # 命令格式:sudo update-alternatives --install
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 4 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 # 如果执行不成功可以分两条命令执行,如: # sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 4 # sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 4 # 切换版本 sudo update-alternatives --config gcc # 移除某个版本 sudo update-alternatives --remove gcc /usr/bin/gcc-4.8 - 环境的配置相对复杂些,包括以下两项:
-
编译和安装(注意:由于官方版本Makefile有BUG,需要更改HLMTools下的Makefile文件77行的空格用tab对齐)
linux32 bash #go to 32 bit terminal # 如果想看些细节的内容,使用./configure --help sudo ./configure --disable-hslab --disable-hlmtools --prefix=/data/liyy/TTS_PROJECT_20211008/hts_demo #for ubuntu 15.04 //Modify “HLMTools/Makefile, not “HTMTools/Makefile” or root “Makefile“. #line 77: replace with: if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi (或者将此行前面的空格删除,再按tab键对齐) # vim强制保存命令:w !sudo tee % # 编译安装 sudo make all # /* 这里安装如果直接sudo make install安装报错时,可以依次进入HTKLib, HLMLib, HTKTools, HLMTools目录执行make all和make install */ sudo make -f Makefile all sudo make -f Makefile install # 将自己的config时定义的安装路径bin目录放在$PATH路径中,如果./configure时没有添加就是/usr/local/HTS-2.3 PATH=$PATH:/home/liyy/tts/hts # 测试是否安装成功 HVite -V
1.3.HTK各部分介绍
所有的语音输入和输出都是通过HWAVE或HPARM
- HSLab:录音,标记,波形显示工具,可以用于采集语音数据并且进行手动标注
- Hcopy:从语音提取特征参数的工具
- HInit和HCompV:对HMM模型初始化的工具,注意,这里需要对每个模型都要使用此命令进行初始化
- HRest:对模型进行迭代训练的工具
- HParse:语法转网络的工具,发音转本文用到的,允许从包含扩展的BNF格式语法规则的源文本生成网络
- HSGen:语法查错工具,该工具将使用随机抽样从SLF网络生成示例单词序列, 能够检查最后的单词网络定义的语言是否与预期的一样是有用的, 还将通过记录每个句子产生的概率来估计经验熵
- HVite:解码工具,也就是识别工具。可以用命令行方式使用,也可以用交互方式使用。
- HAudio:用于从音频设备输入波形
- HWave:用于从文件中读取波形
- HSigP:用于语音处理的数据流输出,支持语音分析中使用到的信号处理操作
- HVQ:用于语音处理的数据流输出,参数化编码由HParm使用HSigP中定义的信号处理操作进行。HParm的输出是observation形式的参数向量,observation是HTK训练和识别工具数据处理的基本单元
- HShell:用户的输入输出以及与操作系统的接口
- HMem:内存管理
- HMath:数学支持
- HLabel:标签文件的HTK接口由模块HLabel提供,它实现了MLF(主标签文件)设施,并支持许多外部标签格式
- HLM:对应语言模型文件
- HNet:对应网络和词图文件
- HDict:对应词典文件, 加载和操作字典的工具
- HBuild: 直接在SLF级别工作,以提供这种详细的控制, 主要功能是使一个大的单词网络被分解成一组小的自包含的子网络,并将其作为输入扩展的SLF格式
- HBuild还可以用于执行一些特殊用途的功能。首先,它可以自动构造单词循环和单词对语法。其次,它可以将统计双字母语言模型合并到网络中。这些可以通过使用HLStats的标签转录产生.
- HDMan: 允许从不同来源自动构造字典, 可以用来编辑和合并不同的源字典,从而形成统一的统一字典
- HGraf:支持简单的交互图形
- HUtil:支持一些utility routines,用于操控HMMs,HTRAIN和HFB支持各种HTK训练工具。
- HModel:对应HMM模型文件
- HAdapt:支持各种HTK调整工具
- HRec:包含主要的识别处理函数, 解码器模块
- HLed:简单的批处理编辑
- HList:用于检查和调试数据转换参数的配置是否有效,检查音频数据格式的最简单的方法,检查音频输入转换是否正确的进行
二、安装其他软件包
2.1.安装SPTK
2.1.1.SPTK简介
语音处理工具包(Speech Processing Tool Kit,SPTK)是由日本名古屋工业大学Tokuda实验室开发的用于语音信号处理的开源工具包,包括基频提取、LPC分析与合成、MGCC参数估计与波形合成等多种用于语音信号处理的基本工具
2.1.2.SPTK安装
-
下载SPTK-3.11工具包
SPTK下载地址
-
解压和安装
# 解压 tar -zxvf SPTK-3.11.tar.gz # 安装 ./configure # 可能报错:configure: error: "Cannot find csh" # 处理方式:sudo apt-get install tcsh sudo make all sudo make install
2.2.安装HTS
2.2.1.HTS简介
基于HMM/ dnn的语音合成系统(HTS,HMM/DNN-based Speech Synthesis System)是依赖于HTK的语音合成系统,与HTK的主要区别是增加了语音合成部分声码器部分,能够使用参数合成波形
2.2.2.HTS_engine API安装
-
下载HTS工具包,这里的版本下载的1.1的API,这里提供1.1和1.01两个版本链接
HTS_engine1.10下载地址
hts_engine_API-1.01.tar.gz
-
解压和安装
# 解压 sudo tar -zxvf hts_engine_API-1.10.tar.gz -C /home/liyy/tts/hts_demo # 进入安装目录,安装 ./configure sudo make sudo install
2.3.安装festival
2.3.1.festival简介
Festival为构建语音合成系统提供了一个通用框架,并包括了各种模块的示例,这里主要用来做位TTS(text to speech)的前端处理
-
参考手册:
festival2.4
2.3.2.speech_tools安装
-
在编译festival之前需要先编译speech_tools工具
? speech_tools下载地址
-
编译和安装
# 解压 sudo tar -xvf speech_tools-2.4-release.tar.gz -C /home/liyy/tts/hts_demo # 安装 sudo ./configure sudo make sudo make install # 报错1:/usr/bin/ld: cannot find -lcurses # 报错2:/usr/bin/ld: cannot find -lncurses # 解决办法:sudo apt-get install libncurses5-dev(如无法安装,请更新ubuntu安装源,见博客:https://blog.csdn.net/nefuyang/article/details/8735133)
2.3.3.festival安装
-
festival下载地址同speech_tools
-
编译和安装
# 解压 tar -xvf festival-2.4-release.tar.gz -C /home/liyy/tts/hts_demo # 编译和安装 ./configure sudo make sudo make install
2.4.DEMO训练
-
下载训练所用数据和脚本
HTS-demo
-
安装Snack和Tcl工具,由于提取声音F0的脚本是用Tcl/Tk编写,调用开源语音工具包Snack中的函数,所以需要安装带有Snack的Tcl,这里推荐ActiveTcl8.4版本,因为8.5之后版本不再包含Snack,需要自己手动安装
-
Snack下载地址
-
ActiveTcl8.4下载地址
# ActiveTcl安装教程:http://www.tcl.tk/doc/howto/compile.html # 解压 tar -zxvf tcl8.4.20-src.tar.gz # 进入安装目录 cd tcl8.4.20 # 进入unix目录,因为是在ubuntu环境下安装 cd unix sudo ./configure sudo make sudo make test sudo make install
-
-
编译和运行demo,参考地址
使用教程
# 解压 tar -xvf HTS-demo_CMU-ARCTIC-SLT.tar.bz2 # 编译和运行 cd HTS-demo_CMU-ARCTIC-SLT #./configure --with-tcl-search-path=/usr/local/bin \ # --with-fest-search-path=/home/liyy/tts/hts_demo/festival/examples \ # --with-sptk-search-path=/home/liyy/tts/hts_demo/SPTK-3.11/bin \ # --with-hts-search-path=/usr/local/HTS-2.3/bin \ # --with-hts-engine-search-path=/home/liyy/tts/hts_demo/hts_engine_API-1.01/bin ./configure --with-fest-search-path=/home/liyy/tts/hts_demo/festival/examples \ --with-sptk-search-path=/home/liyy/tts/hts_demo/SPTK-3.11/bin \ --with-hts-search-path=/usr/local/HTS-2.3/bin \ --with-hts-engine-search-path=/home/liyy/tts/hts_demo/hts_engine_API-1.10/bin # 如果缺少sox包,则使用sudo apt-get install sox安装,或者自己下载安装,下载地址:https://sourceforge.net/projects/sox/files/sox/ # configure: error: hts_engine using hts_engine API version 0.95 or later is required.此错误可能是demo版本有问题导致,检查demo版本和HTS版本是否一致 make make install
-
训练完之后最终的训练结果可以在/home/liyy/tts/hts_demo/HTS-demo_CMU-ARCTIC-SLT/gen/qst001/ver1目录中看到
三、参考文献
- HTK安装实录(Ubuntu14.04 32位虚拟机)
- Ubuntu 16.04安装下HTK
- hts demo搭建
- HTK安装遇到问题总结
四、总结
本篇文章主要是HTS环境搭建的实践以及遇到各种BUG时的解决方法总结,最终能够跑通demo的训练,下一章节将会介绍如何构建自己的数据以及如何使用自己的数据来训练模型