MENU
やすひら
やすひらと申します。
長靴を履いたタヌキ(ITエンジニア)です。
モノ作りの楽しさを発信中。
X(旧Twitter)のフォローもお願いします。

[Python]Open JTalkを用いた音声合成

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

Open JTalkソフトウェア/辞書ファイル/音声情報ファイルをインストールします。

音声情報ファイルのセットアップ

音声情報ファイルをセットアップします。
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

音声情報ファイルをダウンロードしてセットアップします。
本記事では、女性の音声である”mei”の音声をセットアップしています。

“mei”の音声情報ファイルは、複数存在するので発音内容に応じて使い分けることも可能です。
– mei_normal.htsvoice
– mei_bashful.htsvoice
– mei_angry.htsvoice
– mei_happy.htsvoice
– mei_sad.htsvoice

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

Pythonで音声合成できました。

生成した音声ファイルを再生

生成した音声ファイルを再生します。

コマンドライン

$ aplay output.wav
Playing WAVE 'output.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

音声合成で生成した音声ファイルを再生します。

まとめ

Open JTalkを用いた音声合成の方法を紹介しました。

Open JTalkを用いた音声合成の方法は
  • 関連ソフトウェアをインストールする
  • 音声ファイルをセットアップする
  • コマンド/Pythonで音声合成できる

音声アシスタントや、音声変換(Text-To-Speech)の機能を作成したい場合は、音声合成の実装が不可欠です。
Open JTalkでは、テキストファイルを音声ファイル化することができるため、テキスト情報をインプットに、コンピュータが発音するアプリケーションを作成することができます。

  • URLをコピーしました!
目次