HTS音源訓練教程
阿新 • • 發佈:2019-01-13
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