今回は、Open JTalkをインストールして、使ってみます。
Open JTalkは、簡単にいうと、
文字列(テキスト)から音声へ変換してくれるソフトウェアです。
もっと具体的にいうと、txtファイルをwavファイルへ変換してくれます。
今回は、このOpen JTalk をインストールして、実際にテキストをと見込ませて音声ファイルへ変換してみましょう。
オープンソース(修正BSDライセンス)の日本語テキストに基づいて自由な音声を生成するHMMテキスト音声合成システムです。
HMMとは、
隠れマルコフモデル (Hidden Markov Model) のことで、いわゆる確率論(モデル)の一つです。
マルコフモデル は、ざっくりいうと、
ある時の状態は、ある過去の状態が分かりさえすれば、それよりも前の状態の履歴とは無関係に、そのある過去の状態に基づいて確率的に定まることです。 これに対して、隠れマルコフモデル は、マルコフモデルの 状態は直接観測されず、出力(事象)のみが観測される というものです。
突き詰めると難しくなりますので、ここでは、「統計を使った音声合成」技術なんだなぁぐらいの理解で良いかと思います。
参考 : http://www.nii.ac.jp/userdata/results/pr_data/NII_Today/65/all.pdf
- 目次
- 履歴
2015年6月24日 初版
Open JTalkをインストールする
Open JTalk は、hts_engine API を利用しているので 2つのソフトウェアをインストールする必要があります。
Ubuntuには、PPAにてバイナリパッケージもあるようです。ただ、ここでは、全てのディストリビューションでも応用が利くように ソースコードからのインストールを行ってみます。
また、実際に テキストから音声ファイルへ変換する際には、voiceファイル(音声データファイル)が必要になります。その voiceファイル(音声データファイル) もここでダウンロードしておきます。
hts_engine API をインストールする
- 最新のソースコードをダウンロードする。
ソースコードは、http://
sourceforge.net/ にて公開されていますので、最新のソースコードをダウンロードします。projects/ hts-engine/ files/ hts_engine%20API/ # ここでは、1.09 が最新だったので、それをダウンロードします。 $ wget http://downloads.sourceforge.net/hts-engine/hts_engine_API-1.09.tar.gz ... # ダウンロードを終えたら、解凍します。 $ tar -xfz hts_engine_API-1.09.tar.gz # ディレクトリ hts_engine_API-1.09 ができているはずなので、カレントディレクトリを切り替えます。 $ cd hts_engine_API-1.09 [hts_engine_API-1.09] $
- make インストールする。
gcc, g++, makeはすでにインストールされているものとします。
# configure を起動し、環境チェックを行いMakeFileを作成します。 [hts_engine_API-1.09] $ ./configure ... config.status: creating Makefile ... # configure でMakeFileが作成できたら、makeします。 [hts_engine_API-1.09] $ make ... # makeでエラーがなければ、make installでインストールします。 [hts_engine_API-1.09] $ make install ... # hts_engineがインストールされたか確認しておきます。 [hts_engine_API-1.09] $ which hts_engine /usr/local/bin/hts_engine
Open JTalk をインストールする
- 最新のソースコードをダウンロードする。
ソースコードは、http://
sourceforge.net/ にて公開されていますので、最新のソースコードをダウンロードします。projects/ open-jtalk/ files/ Open%20JTalk/ # ここでは、1.08 が最新だったので、それをダウンロードします。 $ wget http://downloads.sourceforge.net/open-jtalk/open_jtalk-1.08.tar.gz ... # ダウンロードを終えたら、解凍します。 $ tar -xfz open_jtalk-1.08.tar.gz # ディレクトリ open_jtalk-1.08 ができているはずなので、カレントディレクトリを切り替えます。 $ cd open_jtalk-1.08 [open_jtalk-1.08] $
- make インストールする。
gcc, g++, makeはすでにインストールされているものとします。
# configure を起動し、環境チェックを行いMakeFileを作成します。 # * ここで、以下の項目を設定します。 # --with-hts-engine-header-path : hts_engine_API のインクルードパス # --with-hts-engine-library-path : hts_engine_API のライブラリパス # --with-charset : テキストの文字コード [open_jtalk-1.08] $ ./configure --with-hts-engine-header-path=/usr/local/include --with-hts-engine-library-path=/usr/local/lib --with-charset=UTF-8 ... config.status: creating Makefile ... # configure でMakeFileが作成できたら、makeします。 [open_jtalk-1.08] $ make ... # makeでエラーがなければ、make installでインストールします。 [open_jtalk-1.08] $ make install ... # open_jtalkがインストールされたか確認しておきます。 [open_jtalk-1.08] $ which open_jtalk /usr/local/bin/open_jtalk
voiceファイル(音声データファイル) をダウンロードする
voiceファイル(音声データファイル) は、Open JTalkの http://
|
また、Open JTalkを用いた MMDAgent (音声対話システムを構築するためのツールキット)があります。
これにも同じように voiceファイルがありますので、比較用にダウンロードしておきます。
該voiceファイルは、http://
|
Open JTalkを使ってみる
ここまでインストールを終えたら、いよいよテキストから音声ファイルへの変換を行ってみましょう。
簡単な変換から、各パラメータを使った変換を行ってみます。
voiceファイルを色々使ってみる
まずは、最も簡単方法でテキストから音声ファイルへの変換を行ってみます。
また、先にダウンロードしたvoiceファイルを使って、声色がどれだけ異なるか確認してみましょう。
使用するテキストファイル (sample.txt) は、以下のとおりとします。
|
nitech_jp_atr503_m001.htsvoiceを使った例
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
mei_normal.htsvoiceを使った例
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
HTS Voice “mei_normal.htsvoice” Copyright (c) Nagoya Institute of Technology
mei_angry.htsvoiceを使った例
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
HTS Voice “mei_angry.htsvoice” Copyright (c) Nagoya Institute of Technology
mei_bashful.htsvoiceを使った例
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
HTS Voice “mei_bashful.htsvoice” Copyright (c) Nagoya Institute of Technology
mei_happy.htsvoiceを使った例
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
HTS Voice “mei_happy.htsvoice” Copyright (c) Nagoya Institute of Technology
mei_sad.htsvoiceを使った例
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
HTS Voice “mei_sad.htsvoice” Copyright (c) Nagoya Institute of Technology
|
パラメータを色々使ってみる
次に、open_jtalk のパラメータを色々使ってみます。
音の変化を確認するため、ここでは、voiceファイルを nitech_jp_atr503_m001.htsvoice 固定とします。
また、使用するテキストファイルは、上記の sample.txt と同じとします。
パラメータ : -s (サンプリング周波数) を使った例
約48000以下の小さな値 : 低く、遅くなる
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
- -s = 30000
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -s = 50000
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -s = 60000
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -s = 70000
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -s = 80000
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
パラメータ : -p (フレーム周期) を使った例
約240以下の小さな値 : 単純に速くなる
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
- -p = 100
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -p = 500
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
パラメータ : -a (オールパス値) を使った例
約0.5 以下の小さな値 : 高い声になる
ヘリウムを吸い込んでしゃべった感じに似ている。
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
- -a = 0.1
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -a = 0.3
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -a = 0.7
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
パラメータ : -b (ポストフィルター係数) を使った例
最大にすると拡声器で割れたように音になる。
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
- -b = 0.0
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -b = 0.5
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -b = 0.8
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
パラメータ : -r (スピーチ速度係数) を使った例
1.0以下の小さな値 : 遅くなる
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
- -r = 0.5
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -r = 1.5
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
パラメータ : -fm (追加ハーフトーン) を使った例
0以下の小さな値 : 低い声になる
15ぐらいで同じ人が高い声をしぼり出している感じになる。 あくまで同じ人が一生懸命に声を高くしたり、低くしたりしている感じになる。
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
- -fm = 0.5
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -fm = 5
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -fm = 15
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -fm = 20
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -fm = 30
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -fm = -20
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
パラメータ : -u (有声/無声境界値) を使った例
0.5以下の小さな値 : 普通
あまりそれほどの差がない感じ。1を指定するとガラガラになる
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
- -u = 0.0
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -u = 0.2
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -u = 0.8
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -u = 0.9
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -u = 1.0
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
パラメータ : -jm (スペクトラム系列内変動の重み) を使った例
1.0以下の小さな値 : 抑揚が小さくなる
値が小さいと平坦なコンピュータの声という感じになり、ある程度、大きな値では、より自然な声になる。
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
- -jm = 0.2
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -jm = 2.0
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
パラメータ : -jf (F0系列内変動の重み) を使った例
1.0以下の小さな値 : 小さな声になる
コマンドイメージは以下のようになります。
|
実際に作成された音声ファイルは、以下のようになります。(ここでは、wavファイルをmp3へ変換しています。)
- -jf = 0.2
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
- -jf = 2.0
HTS Voice “nitech_jp_atr503_m001.htsvoice” Copyright (c) Nagoya Institute of Technology
案外、簡単にできたと思います。以前のバージョンでは、パラメータが多くて大変でしたが、最新ではvoiceファイルが1つになったので、その点では、随分、楽になったと思います。
ただ、もともと名古屋工業大学にて作成されたもの(たぶん、学生さん)なので、IT会社と違って、パラメータのチェックなどは非常に甘いですから、レンジ外で すぐ コア 吐きます。 まあ、それでも レンジ内であれば、概ね 音声変換できますし、なかなか自然な音声となってて興味深いです。
興味のある方は、一度お試しあれ。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
コメントを投稿 :