HTSによるHMM音声合成
Last-modified: 2013-03-16 (土) 05:53:40
Top / HTSによるHMM音声合成
HMM音声合成ツールキット HTS †
HTSとは †
- 名古屋工業大学徳田・李研究室 が提供する音声合成基盤ソフトウェア
- HTS(修正HTK)+SPTK*1
- HTKからの修正点
- ストリーム依存のコンテキストクラスタリング
- 状態継続長モデルとクラスタリング
- F0モデリングのための状態出力確率
- 感情音声合成, 話者適応, モーフィング, 歌声合成 など.
- 言語に依存したコードは無い(どんな言語でも・歌唱音も合成可能)
- LPC, LSP, COC, 単位選択音声合成(CHATR), HMM音声合成(HTS), STRAIGHT など日本製技術の集積
- さまざまな企業で使われている*2
- HTKからの修正点
関連リンク †
- 徳田先生のページ - デモやプレゼンテーション
- HMM-based Speech Synthesis System (HTS) - Home
- hts_engine API
- ランタイムエンジン hts_engine だけはHTKと独立しているので商用利用可能
- HMM音声合成ツールキットの概要
- HMM音声合成ツールキット ver. 2.0
- Open JTalk
- NII講演 統計的手法に基づいた音声合成 ―原理と最近の進展―(名古屋工業大学 徳田恵一教授)
- MMDAgent 今冬公開予定*3
Linux(Debian GNU/Linux 6.0*4*5*6)にインストール †
- ここでは、64bit*7 Linux コンピュータ(Debian GNU/Linux 6.0)にHTSをインストールする方法を説明します。
- なお、以下の説明ではホームディレクトリのパスを $HOME と記述します。
Cコンパイラのインストール †
- C/C++開発環境/Linux(Debian GNU/Linux 6.0)にCコンパイラをインストール に従って gccコンパイラをインストールしておきます。
必要なファイルのダウンロードとインストール †
- サンプルの音響モデルや辞書を使って音声合成を試すだけなら、hts_engine API と Open JTalk のみインストールすればOKです。
- 以下でダウンロードした各ファイルは解凍して*8、$HOME/HTS ディレクトリ直下に入れておきます。
- HTK-3.4.1.tar.gz と HDecode-3.4.1.tar.gz は解凍すると htk ディレクトリにまとまります。
hts_engine_API †
- hts_engine API
- Source Code より hts_engine_API-1.06.tar.gz をダウンロードしました。
- 2012/4/4 時点のバージョン : version 1.06
- hts_engine APIをコンパイルします。*9
mkdir $HOME/HTS/hts_engine_API cd $HOME/HTS/hts_engine_API-1.06 chmod 777 $HOME/HTS/hts_engine_API-1.06/* ./configure --prefix=$HOME/HTS/hts_engine_API/ make make install
Open JTalk †
- Open JTalk
- HTSを使ったHMMテキスト音声合成システム(HTSのデモアプリ)
- Open JTalk の Source Code より open_jtalk-1.05.tar.gz をダウンロードします。
- 2012/4/4 時点のバージョン : 1.05
- Open JTalk サンプル音響モデル
- Open JTalk より > HTS voice version 1.04 > Binary Package をダウンロードします。
- 2012/04/04 現在のファイル名は hts_voice_nitech_jp_atr503_m001-1.04.tar.gz
- Open JTalkをコンパイルします。
mkdir $HOME/HTS/open_jtalk/ cd $HOME/HTS/open_jtalk-1.05 chmod 777 $HOME/HTS/open_jtalk-1.05/* ./configure --with-hts-engine-header-path=$HOME/HTS/hts_engine_API/include --with-hts-engine-library-path=$HOME/HTS/hts_engine_API/lib --prefix=$HOME/HTS/open_jtalk/ make make install
- 辞書ファイルはすでにこの中に入っているようです。*10
HTKとHTS †
- HTK 基本セット
- ここ を参考に HTK-3.4.1.tar.gz をダウンロードします。
- HTK-3.4.1 以降のバージョンでないとHTSのパッチが当たりません。
- HTK Speech Recognition Toolkit
- ここ から、Linux/Unix downloads > HDecode-3.4.1.tar.gz をダウンロードします。
- HTS(HTKのパッチとして配布)
- HMM-based Speech Synthesis System (HTS) - Home
- Download にある README、Document、Source code をダウンロードしました。
- 2012/4/4 時点のバージョン : HTS-2.2_for_HTK-3.4.1.tar.bz2
- HMM-based Speech Synthesis System (HTS) - Home
- はじめに、HTSのパッチを当てます。
- HTS-2.2_for_HTK-3.4.1 内の INSTALL (テキストファイル)の指示に従います。
- 同じディレクトリ内にある HTS-2.2_for_HTK-3.4.1.patch を、htkディレクトリに入れる
cp $HOME/HTS/HTS-2.2_for_HTK-3.4.1/HTS-2.2_for_HTK-3.4.1.patch $HOME/HTS/htk/
- htkディレクトリに移動して、以下を実行
cd $HOME/HTS/htk patch -p1 -d . < HTS-2.2_for_HTK-3.4.1.patch
- patch_log.txt のように出たら、成功です。
- HTKをコンパイルします。
chmod 777 $HOME/HTS/htk/* ./configure --prefix=$HOME/HTS/htk/ make make install
- コンパイルに成功したら、$HOME/HTS/htk 内に実行ファイルの入ったディレクトリ bin が作られます。
ここ を参考に、起動時に自動的にパスが通るようにしておきます。
SPTK †
- SPTK
- Speech Signal Processing Toolkit (SPTK)
- 2012/4/4 時点の最新バージョン SPTK-3.5.tar.gz をダウンロードしました。
- SPTKをコンパイルします。
mkdir $HOME/HTS/SPTK cd $HOME/HTS/SPTK-3.5 chmod 777 $HOME/HTS/SPTK-3.5/* ./configure --prefix=$HOME/HTS/SPTK/ make make install
OpenFst †
- OpenFst
- 重み付き有限状態トランスデューサー (WFST) を扱うライブラリ
- Download より openfst-1.3.1.tar.gz をダウンロードしました。
- 2012/4/4 時点のバージョン : Version 1.3.1
- OpenFstをコンパイルします。
mkdir $HOME/HTS/openfst/ cd $HOME/HTS/openfst-1.3.1 chmod 777 $HOME/HTS/openfst-1.3.1/* ./configure --prefix=$HOME/HTS/openfst/ make make install
- 最初に実行したときは、./configure の時点で「compiler cannot create executables」エラーが出たので、ここ を参考に build-essential パッケージを入れたら(apt-get install build-essential)、うまくいきました。
ActiveTcl †
- ActiveTcl
- F0解析(Tcl/Tk の中のgetf0)、デモプログラムで使用
- 64bit版 ActiveTcl8.4.19.6.295590-linux-x86_64 をダウンロードしました。
- マニュアルによれば ActiveTcl 8.5. 以降は該当プログラム(Snack*11)が入っていないため、8.4 以前をインストールする必要があります。
- ActiveTclをコンパイルします。
mkdir $HOME/HTS/ActiveTcl cd $HOME/HTS/ActiveTcl8.4.19.6.295590-linux-x86_64 chmod 777 $HOME/HTS/ActiveTcl8.4.19.6.295590-linux-x86_64/* chmod 777 $HOME/HTS/ActiveTcl8.4.19.6.295590-linux-x86_64/payload/* chmod 777 $HOME/HTS/ActiveTcl8.4.19.6.295590-linux-x86_64/payload/bin/* sh install.sh (指示に従って操作、インストールディレクトリは (ホームディレクトリ)/HTS/ActiveTcl/ を指定)
Festival †
- Festival
- テキスト解析器(参考)、話者適応学習で使用
- [ download ] > In Europe より festival-2.1-release.tar.gz と speech_tools-2.1-release.tar.gz をダウンロードしました。
- 注:以下のマニュアルでは、2012/04/04現在 Festival のインストールに成功していません。
- インストールマニュアル に従ってFestivalをコンパイルします。
mv $HOME/HTS/festival $HOME/HTS/festival_source mkdir $HOME/HTS/festival/ cd $HOME/HTS/festival_source chmod 777 $HOME/HTS/festival_source/* ./configure --prefix=$HOME/HTS/festival/ make make install
- つくりかけ。うまくいきません。
- Festival install/音声合成ソフトウェアインストール手順 を参考にインストール検討中
- SIOD: Scheme in One Defun をダウンロードしてインストール
- 以下のエラー。
slibu.c:1031: error: conflicting types for `lchmod' /usr/include/sys/stat.h:261: error: previous declaration of `lchmod' make[2]: *** [slibu.o] error 1
- 関係ありそうな掲示板 → 1 2
サンプルデータを使った音声合成(HMMテキスト音声合成システム OpenJTalk) †
- はじめに、hts_engine APIのインストール と Open JTalkのインストール をすませておきます。
- サンプル音響モデルを適用
- hts_voice_nitech_jp_atr503_m001-1.04 の中身を $HOME/HTS/open_jtalk/bin 以下におく。
cp $HOME/HTS/hts_voice_nitech_jp_atr503_m001-1.04/* $HOME/HTS/open_jtalk/bin
- なお音響モデルを自分で構築する方法は、音響モデルの学習を参照して下さい。
- hts_voice_nitech_jp_atr503_m001-1.04 の中身を $HOME/HTS/open_jtalk/bin 以下におく。
- 話す内容のテキストを作る
cd $HOME/HTS/open_jtalk/bin emacs input.txt (適当な文字列を作る)
- サンプル input.txt
- 文字コードは EUC にしてください。
- サンプル input.txt
- サンプルプログラムを実行してみます。
- $HOME/HTS/open_jtalk/bin で以下を実行(参考:Open JTalk をVS2005でコンパイルしてみた)。
cd $HOME/HTS/open_jtalk/bin ./open_jtalk -td tree-dur.inf -tf tree-lf0.inf -tm tree-mgc.inf -md dur.pdf -mf lf0.pdf -mm mgc.pdf -df lf0.win1 -df lf0.win2 -df lf0.win3 -dm mgc.win1 -dm mgc.win2 -dm mgc.win3 -cf gv-lf0.pdf -cm gv-mgc.pdf -ef tree-gv-lf0.inf -em tree-gv-mgc.inf -k gv-switch.inf -ow output.wav -x $HOME/HTS/open_jtalk/dic ./input.txt
- 引数の詳細(「OpenJTalkを使ってみる」)
- これらの引数は hts_engine が要求しているもの(音響モデルサンプルの INSTALL を参照)。 → hts_engine のマニュアル
- 同じディレクトリに output.wav ができます。
- サンプル output.wav
- $HOME/HTS/open_jtalk/bin で以下を実行(参考:Open JTalk をVS2005でコンパイルしてみた)。
音響モデルの学習 †
- HTSの音響モデルの学習を行う(話者依存学習)方法について。
- はじめに、Festival以外のプログラムを全てインストール しておきます。
デモプログラムを試す †
- ここ から、Speaker dependent training demo > Japanese > Normal demo > HTS-demo_NIT-ATR503-M001.tar.bz2 をダウンロードします。
- 解凍して、中にある INSTALL に従ってインストール
cd $HOME/HTS/HTS-demo_NIT-ATR503-M001 chmod 777 $HOME/HTS/HTS-demo_NIT-ATR503-M001/* ./configure --with-tcl-search-path=$HOME/HTS/ActiveTcl/bin --with-sptk-search-path=$HOME/HTS/SPTK/bin --with-hts-search-path=$HOME/HTS/htk/bin --with-hts-engine-search-path=$HOME/HTS/hts_engine_API/bin --with-openfst-search-path=$HOME/HTS/openfst/bin make
- 引数の詳細 help_HTS-demo_NIT-ATR503-M001.txt
- 「doesn't support snack」エラーが出たときは、libsnack2 を apt-get するか、ActiveTclのバージョンを確認して下さい。
- 解凍して、中にある INSTALL に従ってインストール
- 学習が開始される。
- 表示されるテキスト(20ファイルのみで試した例): run_HTS-demo_NIT-ATR503-M001.txt
- "Extracting f0" フェイズで「Unable to open mixer /dev/mixer」と出ている。解析失敗?
- "Extracting MGC coefficients" と "Extracting f0" のフェイズではrawディレクトリ内の拡張子.rawのファイルを順番に解析している(HTS-demo_NIT-ATR503-M001/data/Makefile.in による)。"Composing training data" フェイズでは data/mgc に記述されたファイルを順番に処理している。
- 上が完了してもHTKの学習(scripts/Training.pl)が完了していなかったので*12、続いて以下を実行する。
cd $HOME/HTS/HTS-demo_NIT-ATR503-M001 chmod 777 scripts/* scripts/Training.pl scripts/Config.pm
- /HTS-demo_NIT-ATR503-M001/data/labels/gen 以下のラベルファイルを読み込んで同名の raw ファイルを解析している?
- OpenJTalk で読める形式(hts_engine API の入力形式)の音響モデル(拡張子 pdf)は HTS-demo_NIT-ATR503-M001/voices/qst001/ver1 に出力される。
- ここで作った音響モデルを OpenJTalk に読み込ませることができる。open_jtalk を実行する際の引数を変えればOK。*13 → output_atr.wav
音響モデルの適応 †
- 【ご注意】以下は最後までできていません。
- はじめに、全てのプログラムをインストール しておきます。
- ここ から、Speaker adaptation/adaptive training demo > English > STRAIGHT demo > HTS-demo_CMU-ARCTIC-ADAPT_STRAIGHT.tar.bz2
- STRAIGHTおよびMATLABの実行環境がない場合は、HTS-demo_CMU-ARCTIC-ADAPT.tar.bz2 を使ってください。
- 解凍して、中にある INSTALL に従ってインストール
*1 NII講演 統計的手法に基づいた音声合成 ―原理と最近の進展―(名古屋工業大学 徳田恵一教授) による
*2 ただし、多様な音声が合成可能な点に着目した例は少ない、とのこと
*3 NII講演 統計的手法に基づいた音声合成 ―原理と最近の進展―(名古屋工業大学 徳田恵一教授) による
*4 注:Debian GNU/Linux 4.0 では、hts_engine API(1.04) のコンパイルに失敗しました。
*5 WindowsにHTSをインストールすることも試しましたが、うまくいっていません。
*6 MacintoshにHTSをインストールする方法に関して、菊池研究室の宮島崇浩研究員が検討なさっています。
*7 32bitコンピュータの場合、ActiveTclのダウンロードファイルを変えて下さい。
*8 .tar.gz形式のファイルの解凍は、Windowsでは Lhaplus などで可能です。Linuxでは tar コマンドを使います。
*9 ./configure --prefix の引数に「$HOME/HTS/hts_engine_API-1.06」を指定すると、「~は同じファイルです」エラーが出て make install に失敗します。インストールディレクトリはソースコードとは別のディレクトリを指定します(参考)。
*10 ただし EUC、Shift-JISの辞書が必要ならここから別途ダウンロード
*11 Snack は Praat に並ぶ有名な音声解析のフリーソフトであるようです。例えばMATLAB Note/音声の分析/VoiceSauce/特徴量の計算方法の詳細を参照。
*12 パーミッションの問題か、パスの問題?
*13 英語の音響モデルに置き換えることも検討してみましたが、今のところうまくいっていません。
添付ファイル: output_atr.wav 2253件 [詳細] run_HTS-demo_NIT-ATR503-M001.txt 3364件 [詳細] help_HTS-demo_NIT-ATR503-M001.txt 2926件 [詳細] patch_log.txt 6219件 [詳細] output.wav 2302件 [詳細] input.txt 2179件 [詳細]