1. 程式人生 > >HTS Sinsy音源庫訓練方法

HTS Sinsy音源庫訓練方法

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

需要環境: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資料夾內