HTS Sinsy音源庫訓練方法
阿新 • • 發佈:2019-01-23
最近看了些方法,整理了下。
需要環境:Debain/Ubuntu x86_64系統
下載後解壓
先編譯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資料夾內