2021年12月23日 更新

ラズパイで音声合成をしゃべらせよう

どうも、クラゲです。
今回は音声合成を使ってRaspberry Piに日本語をしゃべらせる方法を紹介します。任意のテキストを即時実行して喋らせることが可能です。それでは動画で聞いてみましょう!

この動画では自然に聞こえるように、言葉を選んでテキストにしています。例えばニュースや天気などをそのまましゃべらせると、ちょっとぎこちなかったりもしますが、それも愛嬌です。

では作り方です。

[TOC]

必要なもの

  • スピーカー

今回はオーディオ出力端子のステレオミニジャックに繋がるスピーカーを使います。スピーカーのない人は、HDMIでディスプレーのスピーカーから喋らせることもできます。

Open JTalkのインストール

音声合成のエンジン、辞書、音声データを一気にインストールします。
コマンド一発でサクッとできます。

sudo apt install -y open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001

2021年12月時点ではver1.11が入りました。

スクリプトファイル作成

テキストエディッタnanoを使ってjtalk.shというスクリプト名にして作成します。

sudo nano jtalk.sh

中身は以下の内容をコピペして保存します。

#!/bin/bash
tempfile=$(mktemp)
option="-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow $tempfile"

echo "$1" | open_jtalk $option
aplay -q $tempfile
rm $tempfile

nanoの保存操作:Ctrl+O、Enter、Ctrl+X

中身の解説です。
open_jtalkコマンドで、tempfileとして一時的にwavファイルを作り、aplayコマンドでtempfileを再生し、最後にtempfileを削除しています。optionの-mは使う音声データ、-xは使う辞書、-owは保存するファイル名を表しています。

スクリプトファイルができたら、実行可能になるように権限を変更します

sudo chmod 755 jtalk.sh

オーディオ設定

早速実行!といきたいところですが、先にオーディオの設定をしましょう。
まず、オーディオ出力端子にスピーカーを接続してください。スピーカーのない人はHDMIケーブルでディスプレイと繋げてください。

Raspberry Piデスクトップ画面の右上の方にスピーカーアイコンがあります。

音量調整やミュートは左クリックを行うこと出来ます。
また、右クリックを行うことで出力先としてAnalogまたはHDMIを選択することが出来ますのでスピーカーを接続した場合はAnalogを選択するようにしましょう。

なお、以下のコマンドで音量調整だけは可能です。
上下キーで音量のアップダウンができ、数値キーを押すとその10倍の値に直接指定できます。

alsamixer

しゃべらせてみる

以下のコマンドで簡単に喋らせることができます。文字列をいろいろ変えてみてください。

./jtalk.sh "こんにちは。ラズベリーパイが喋っていますよ"

先ほどの音量設定にもよりますが、結構ボリュームが小さいので注意しましょう。
このままだとおじさんの低い声なので、メイちゃんの声に変えます!

MMDagentをダウンロード

こちらのページの一番下にSourceforgeのリンクがあり、そこからダウンロード可能ですが、ラズパイ上のコマンドを使ってダウンロードします。

wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.7/MMDAgent_Example-1.7.zip --no-check-certificate

展開します。

unzip MMDAgent_Example-1.7.zip

展開してできたVoiceフォルダの中身を /usr/share/hts-voiceの下にコピーします。

sudo cp -R ./MMDAgent_Example-1.7/Voice/mei /usr/share/hts-voice/

これでメイちゃんの音声データが配置されました。

スクリプトファイルの編集

テキストエディッタnanoを使ってjtalk.shを編集します。

sudo nano jtalk.sh

先程コピペした内容を一旦消して、新たにコピペし直します。
ちなみに、変更箇所は3行目をメイちゃんの音声データにしている点です

#!/bin/bash
tempfile=$(mktemp)
option="-m /usr/share/hts-voice/mei/mei_normal.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow $tempfile"

echo "$1" | open_jtalk $option
aplay -q $tempfile
rm $tempfile

nanoの保存操作:Ctrl+O、Enter、Ctrl+X

メイちゃんの声でしゃべらせる

先ほどと同じです。色々文字列を変えてみよう!

./jtalk.sh "こんにちは。ラズベリーパイが喋っていますよ"

メイちゃんの音声データは、mei_normalの他にmei_angrymei_happyなどもありますので、色々試してみると面白いと思います。

その他

他にもゆっくりボイスで有名なAquesTalkもあるので、そちらも試してみると面白いと思います。

以上、「RaspberryPiを音声合成でしゃべらせよう」でした!