Ubuntuでテキスト音声出力実験
2025/02/17

Linuxで合成音声をバッチ作成する方法は色々あるけれどopen_jtalkで実験してみた。
途中いくつかの先人のサイトを拝見したが音声ディクショナリのパスが過去と現在で導入場所が違うたためエラーがでてたがフォルダー調査をして書き換えた。
まずは以下のパッケージをインストールします。男性と女性の音声サンプリングデータを用意して所要の場所(/usr/share/hts-voice)へ解凍します。
1 2 3 4 5 6 |
sudo apt-get install open-jtalk sudo apt-get install open-jtalk-mecab-naist-jdic sudo apt-get install hts-voice-nitech-jp-atr503-m001 wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.6/MMDAgent_Example-1.6.zip unzip MMDAgent_Example-1.6.zip sudo cp -r MMDAgent_Example-1.6/Voice/mei/ /usr/share/hts-voice/ |
open_jtalkはコマンドラインが長いのでスクリプトを作って起動させましょう
vi speak_jp.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/bin/bash # 入力テキストをコマンドラインから取得 TEXT=$1 # 中間ファイル WAV_FILE="output.wav" TMP_FILE="tmp.txt" # テキストをファイルに書き込み echo "$TEXT" > $TMP_FILE # Open JTalkを使って日本語音声に変換 open_jtalk \ -x /var/lib/mecab/dic/open-jtalk/naist-jdic \ -m /usr/share/hts-voice/mei/mei_normal.htsvoice \ -ow $WAV_FILE \ $TMP_FILE # aplayを使って音声を再生 aplay $WAV_FILE # 中間ファイルの削除 rm $TMP_FILE $WAV_FILE |
起動時に引数で日本語を与えてみましょう。
1 |
./speak_jp.sh "日本の人口は、2021年10月1日の国勢調査によると、約1億2838万人です。ただし、人口は減少傾向にあり、2025年の人口は約1億2600万人になると予測されています。" |
生成したサンプルデータです。わりと許せる音声になってますね。
いい感じで音声再生できました。Google Speech APIでもできそうだけど、これはこれでいいところがある。次は音声サンプルを作る方法を調べてみよう。