トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索   ヘルプ   最終更新のRSS

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

関連リンク

Linux(Debian GNU/Linux 6.0*4*5*6)にインストール

  • ここでは、64bit*7 Linux コンピュータ(Debian GNU/Linux 6.0)にHTSをインストールする方法を説明します。
  • なお、以下の説明ではホームディレクトリのパスを $HOME と記述します。

Cコンパイラのインストール

必要なファイルのダウンロードとインストール

  • サンプルの音響モデルや辞書を使って音声合成を試すだけなら、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のパッチとして配布)
  • はじめに、HTSのパッチを当てます。
    • HTS-2.2_for_HTK-3.4.1 内の INSTALL (テキストファイル)の指示に従います。
    1. 同じディレクトリ内にある 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/
    2. htkディレクトリに移動して、以下を実行
      cd $HOME/HTS/htk
      patch -p1 -d . < HTS-2.2_for_HTK-3.4.1.patch
  • 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

サンプルデータを使った音声合成(HMMテキスト音声合成システム OpenJTalk)

  • 話す内容のテキストを作る
    cd $HOME/HTS/open_jtalk/bin
    emacs input.txt
    (適当な文字列を作る)
    • サンプル fileinput.txt
      • 文字コードは EUC にしてください。
  • サンプルプログラムを実行してみます。
    • $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 ができます。
    • サンプル fileoutput.wav

音響モデルの学習

デモプログラムを試す

  • ここ から、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
  • 学習が開始される。
    • 表示されるテキスト(20ファイルのみで試した例): filerun_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。*13fileoutput_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 英語の音響モデルに置き換えることも検討してみましたが、今のところうまくいっていません。