Open JTalk のインストールと使用法 (Ubuntu 上)

Open JTalk は,日本語テキストから音声波形を合成する音声合成 (text-to-speech) システムである.HMM に基づく音声合成エンジン hts_engine API,形態素解析用の辞書,HTS voice(話者の音響モデル)を組み合わせて動作する.最新版は Open JTalk 1.11(2018年12月25日公開),hts_engine API 1.10(2015年12月25日公開)である.ライセンスは Modified BSD ライセンス.

【関連する外部ページ】

このページでは,次の 2 通りの方法を説明する.

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade

ビルド用ツールと音声再生ツールのインストール

端末で,次のコマンドを実行する. build-essential は C コンパイラ等のビルド用ツール,alsa-utils は音声再生コマンド aplay を提供する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install build-essential curl unzip alsa-utils

hts_engine API と Flite+hts_engine(英語音声合成)のインストール(ソースコードからのビルド)

hts_engine API は,HTS で学習された HMM から音声波形を合成するエンジンである. Flite+hts_engine は,英語テキスト解析器 Flite と hts_engine API を組み合わせた英語音声合成システムである. Open JTalk のビルドには hts_engine API が必要である.

端末で,次のコマンドを実行する.

cd /tmp
curl -L -o hts_engine_API-1.10.tar.gz https://downloads.sourceforge.net/project/hts-engine/hts_engine%20API/hts_engine_API-1.10/hts_engine_API-1.10.tar.gz
curl -L -o flite+hts_engine-1.07.tar.gz https://downloads.sourceforge.net/project/hts-engine/flite%2Bhts_engine/flite%2Bhts_engine-1.07/flite%2Bhts_engine-1.07.tar.gz
curl -L -o hts_voice_cmu_us_arctic_slt-1.05.tar.gz https://downloads.sourceforge.net/project/hts-engine/HTS%20voice/hts_voice_cmu_us_arctic_slt-1.05/hts_voice_cmu_us_arctic_slt-1.05.tar.gz
#
cd /tmp
tar -xvzof hts_engine_API-1.10.tar.gz
cd hts_engine_API-1.10
./configure
make
sudo make install
sudo ldconfig
#
cd /tmp
tar -xvzof flite+hts_engine-1.07.tar.gz
cd flite+hts_engine-1.07
./configure
make
sudo make install
sudo ldconfig
#
cd /usr/local/share
sudo tar -xvzof /tmp/hts_voice_cmu_us_arctic_slt-1.05.tar.gz

Flite+hts_engine を使ってみる

  1. 英語テキストファイルの準備

    端末で,次のコマンドを実行する.

    echo "Hello, this is a speech synthesis test." > /tmp/input.txt
    
  2. 音声ファイルの作成

    端末で,次のコマンドを実行する. -m は HTS voice ファイル,-o は出力する WAV ファイルの指定である.

    flite_hts_engine -m /usr/local/share/hts_voice_cmu_us_arctic_slt-1.05/cmu_us_arctic_slt.htsvoice -o /tmp/output.wav /tmp/input.txt
    
  3. 再生してみる

    端末で,次のコマンドを実行する.

    aplay /tmp/output.wav
    

Open JTalk のインストール(ソースコードからのビルド)

Open JTalk 本体,UTF-8 の辞書 open_jtalk_dic_utf_8-1.11,日本語男性話者の HTS voice hts_voice_nitech_jp_atr503_m001-1.05 をインストールする. 事前に,前の節の手順で hts_engine API をインストールしておく必要がある.

端末で,次のコマンドを実行する.

cd /tmp
curl -L -o open_jtalk-1.11.tar.gz https://downloads.sourceforge.net/project/open-jtalk/Open%20JTalk/open_jtalk-1.11/open_jtalk-1.11.tar.gz
curl -L -o open_jtalk_dic_utf_8-1.11.tar.gz https://downloads.sourceforge.net/project/open-jtalk/Dictionary/open_jtalk_dic-1.11/open_jtalk_dic_utf_8-1.11.tar.gz
curl -L -o hts_voice_nitech_jp_atr503_m001-1.05.tar.gz https://downloads.sourceforge.net/project/open-jtalk/HTS%20voice/hts_voice_nitech_jp_atr503_m001-1.05/hts_voice_nitech_jp_atr503_m001-1.05.tar.gz
#
cd /tmp
tar -xvzof open_jtalk-1.11.tar.gz
cd open_jtalk-1.11
./configure --with-charset=UTF-8 \
  --with-hts-engine-header-path=/usr/local/include \
  --with-hts-engine-library-path=/usr/local/lib
make
sudo make install
#
cd /usr/local/share
sudo tar -xvzof /tmp/open_jtalk_dic_utf_8-1.11.tar.gz
#
cd /usr/local/share
sudo tar -xvzof /tmp/hts_voice_nitech_jp_atr503_m001-1.05.tar.gz

女性話者の HTS voice(Mei)の追加

女性話者の HTS voice は,MMDAgent の配布物 MMDAgent_Example-1.8.zip に含まれている. 端末で,次のコマンドを実行する.

cd /tmp
curl -L -o MMDAgent_Example-1.8.zip https://downloads.sourceforge.net/project/mmdagent/MMDAgent_Example/MMDAgent_Example-1.8/MMDAgent_Example-1.8.zip
unzip -o MMDAgent_Example-1.8.zip
sudo cp -R /tmp/MMDAgent_Example-1.8/Voice/mei /usr/local/share/

Open JTalk を使ってみる

  1. 日本語テキストファイル(UTF-8)の準備

    端末で,次のコマンドを実行する.

    echo "これは音声合成のテストです。" > /tmp/input2.txt
    
  2. 音声ファイルの作成

    端末で,次のコマンドを実行する. -m は HTS voice ファイル,-x は辞書ディレクトリ,-ow は出力する WAV ファイルの指定である.

    open_jtalk -m /usr/local/share/hts_voice_nitech_jp_atr503_m001-1.05/nitech_jp_atr503_m001.htsvoice -x /usr/local/share/open_jtalk_dic_utf_8-1.11 -ow /tmp/output2.wav /tmp/input2.txt
    
  3. 再生してみる

    端末で,次のコマンドを実行する.

    aplay /tmp/output2.wav
    

apt によるインストールと使用(Ubuntu の公式リポジトリ)

Ubuntu の公式リポジトリには Open JTalk 1.11 のパッケージが収録されている. Open JTalk 本体と辞書は universe,日本語男性話者の HTS voice は multiverse に含まれる.

  1. インストール

    端末で,次のコマンドを実行する.

    sudo add-apt-repository -y universe
    sudo add-apt-repository -y multiverse
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001 alsa-utils
    

    インストールされるファイルの場所は次の通りである.

    • 辞書: /var/lib/mecab/dic/open-jtalk/naist-jdic
    • HTS voice: /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice
  2. 日本語テキストファイル(UTF-8)の準備

    端末で,次のコマンドを実行する.

    echo "これは音声合成のテストです。" > /tmp/1.txt
    
  3. シェルスクリプトの作成

    次の内容を /tmp/hoge.sh という名前で保存する. -r は話す速さ(1.0 が標準),-a はスペクトルの後フィルタ係数,-jf は基本周波数の GV の重みであり,これらを変えると声の印象が変わる.

    #!/bin/sh
    open_jtalk \
    -x /var/lib/mecab/dic/open-jtalk/naist-jdic \
    -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \
    -ow /tmp/hoge.wav \
    -r 1.0 \
    -a 0.5 \
    -jf 1.0 \
    "$@"
    
  4. 実行

    端末で,次のコマンドを実行する. open_jtalk はファイル名を省略すると標準入力からテキストを読み込む.

    sh /tmp/hoge.sh /tmp/1.txt
    aplay /tmp/hoge.wav
    

    テキストファイルの文字コードが UTF-8 でない場合(Shift_JIS や EUC-JP の場合)は, nkf または iconv で UTF-8 に変換してから渡す. 端末で,次のコマンドを実行する.

    sudo apt -y install nkf
    nkf -w /tmp/1.txt | sh /tmp/hoge.sh
    aplay /tmp/hoge.wav