1. 程式人生 > >HTS音源訓練教程

HTS音源訓練教程

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