Pythonでは、音声合成でテキスト情報を音声に変換する技術を利用できます。
Pythonの音声合成は、いくつかの方法がありますが、本記事ではOpen JTalkを利用して、音声合成を行います。
Open JTalkを用いた音声合成を紹介します
- 音声合成とは
- Open JTalkによる音声合成
- Open JTalkの環境構築
- Open JTalkの使い方
音声合成とは
音声合成は、コンピュータを使ってテキスト情報を人工的に音声に変換する技術です。
テキスト情報を人間の声に近い形で再生できるため、聴覚で情報処理する場合に活用しています。
初期の音声合成は、単純な機械音でしたが、現在ではAIを用いた高度な技術により、自然な音声で表現生成されるようになっています。
Open JTalkとは
Open JTalkは、オープンソースの音声合成ソフトウェアです。
日本語の音声を生成することができるのが特徴です。
処理速度は高速ですが、生成される音声は単調で機械感のある音声が生成されます。
Open JTalkの環境構築
Open JTalkの環境を構築する手順を紹介します。
関連ソフトウェアをインストール
関連ソフトウェアをインストールします。
コマンドライン
sudo apt install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
音声情報ファイルのセットアップ
音声情報ファイルをセットアップします。
hts-voice-nitech-jp-atr503-m001は男性の音声ですが、音声情報ファイルをセットアップすることで、変更することができます。
コマンドライン
wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.6/MMDAgent_Example-1.6.zip/download -O MMDAgent_Example-1.6.zip
unzip MMDAgent_Example-1.6.zip MMDAgent_Example-1.6/Voice/*
sudo cp -r MMDAgent_Example-1.6/Voice/mei/ /usr/share/hts-voice
Open JTalkで音声合成
Open JTalkで音声合成します。
本記事では、コマンドラインによる音声合成と、Pythonによる音声合成を紹介します。
コマンドラインで音声ファイルを生成
コマンドラインで音声ファイルを生成することができます。
コマンドライン
echo "テスト" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -r 1.0 -ow output.wav
Pythonで音声ファイルを生成
Pythonで音声ファイルを生成します。
ソースコード
import subprocess
def open_jtalk_tts(text):
open_jtalk=['open_jtalk']
mech=['-x','/var/lib/mecab/dic/open-jtalk/naist-jdic']
htsvoice=['-m','/usr/share/hts-voice/mei/mei_normal.htsvoice']
speed=['-r','1.0']
outwav=['-ow','output.wav']
cmd=open_jtalk+mech+htsvoice+speed+outwav
subprocess.run(cmd,input=text.encode())
if __name__ == '__main__':
open_jtalk_tts("テスト")
コマンド実行例
$ python3 -B python-open-jtalk.py
$ ls
output.wav
python-open-jtalk.py
生成した音声ファイルを再生
生成した音声ファイルを再生します。
コマンドライン
$ aplay output.wav
Playing WAVE 'output.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
まとめ
Open JTalkを用いた音声合成の方法を紹介しました。
- 関連ソフトウェアをインストールする
- 音声ファイルをセットアップする
- コマンド/Pythonで音声合成できる
音声アシスタントや、音声変換(Text-To-Speech)の機能を作成したい場合は、音声合成の実装が不可欠です。
Open JTalkでは、テキストファイルを音声ファイル化することができるため、テキスト情報をインプットに、コンピュータが発音するアプリケーションを作成することができます。