今回は、Speaker pHATを準備して、音声合成ファイルを再生する手順を紹介します。ラズパイZeroやラズパイ2、3 がスピーカーに繋がっている(音声が出力可能)な状態でしたら、後半「音声合成に必要なパッケージのインストール」の手順からでも楽しめるようになっていますので参考にして下さい。
Speaker pHAT を使ってみた
Speaker pHAT はGPIOピンに装着するタイプのHATです。このpHATは、I2S DAC とモノラルアンプ、小型8Ω 2Wスピーカー、LED10個を搭載しています。音声がハッキリと聞こえるので、これ1枚で外出先で音声を流したり、インターネットラジオを聴いたりと活用できると思います。また、別途USBマイクを用意して対話型の音声認識を楽しめたりもできそうなウキウキが待っています。
- Pimoroni Speaker pHAT - Pimoroni
- スイッチサイエンス https://www.switch-science.com/catalog/3218/
スイッチサイエンスで国内販売が始まりました!
スピーカー不要の場合
ちなみに、スピーカーは既に持っていて、ラズパイZeroと繋げるDACだけ欲しい人は、以前紹介した pHAT DACがおすすめです。
Speaker pHAT のセットアップ
必要パッケージをインストールする段階では Speaker pHAT を装着しないで下さい。必要パッケージがインストールされていない状態で pHAT を装着してしまうと、OSの起動がうまくいかない場合があります。
今回、ラズパイZeroを使っていますが、ラズパイ2、3を使用する場合はI2Sをsudo raspi-config
で有効化してください。
以下の手順でSpeaker pHATに必要なパッケージをインストールします。
$ sudo curl -sS https://get.pimoroni.com/speakerphat | bash Do you wish to continue? [y/N] y Do you wish to perform a full install? [y/N]y Would you like to reboot now? [y/N] y
セットアップが終わったら、一度電源を切ります。
$ sudo shutdown -h now
電源を切り終えたら、microUSBを外して Speaker pHAT を装着して下さい。装着したら電源に接続しますが、このときmicroUSBからの給電は直接電源へ接続したUSBアダプターから行って下さい。Speaker pHAT単体で消費するので、安定した電力が必要です。そのため、PCからの給電は不安定になることがあるため行わないで下さい。もし、給電不足になると、出力した音声にノイズが走ったり、OS自体が正常に起動できなくなります。
スピーカー出力テスト
OSが起動できたら、スピーカ出力テストをします。speaker-test
コマンドを実行して、Speaker pHATからテスト音が流れるか確認します。もし問題無くテスト音が出たらCtrl+C
でキャンセルして構いません。
$ speaker-test -t sine -f 600
音量を調整したいときは以下のコマンドで調整できます。
$ alsamixer
ちなみに楽曲を流すと、以下のようにLEDが光って1980年代風のブームボックスっぽいデザインになっています。
Raspberry Pi Zero + Speaker pHATの組み合わせ pic.twitter.com/OTA47vsZda
— Manami Taira (@mana_cat) 2017年5月4日
次は、音声合成をします。
音声合成に必要なパッケージのインストール
日本語の音声合成に必要なパッケージをインストールします。
OpenJtalkのインストール
まずは open-jtalk をインストールし、その後、提案パッケージをインストールします。確認のため 続行しますか? [Y/n]
と訊かれますので y
を入力します。
$ sudo apt-get install open-jtalk パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: libhtsengine1 提案パッケージ: open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001 以下のパッケージが新たにインストールされます: libhtsengine1 open-jtalk アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。 187 kB のアーカイブを取得する必要があります。 この操作後に追加で 542 kB のディスク容量が消費されます。 続行しますか? [Y/n] y
次に、表示された提案パッケージをインストールします。
$ sudo apt-get install open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
音声を合成する
男性の音声エージェントを使って合成してみよう
必要なパッケージがインストールされたら、先ほどインストールした /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice
を使って実際に音声データを合成します。このとき、合成元のテキストを voice.txt
として用意します。これを OpenJtalk を使って日本語の音声として合成し、出力します。出力する音声は wav
ファイルになります。
$ nano voice.txt こんばんは。はじめまして、僕の名前は江戸川コナン。探偵さ。
作成した テキスト voice.txt
をOpenJtalk の元データとして渡すために、次のコマンドを実行します。そして、 aplay
コマンドで出力されたvoice.wav
ファイルを再生します。
$ open_jtalk -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow voice.wav voice.txt $ aplay voice.wav
問題無く音声が出たら成功です。
女性の音声エージェントを使って合成してみよう
次に、女性の音声エンジンを使用してみたいので、MMDAgentを利用します。MMDAgentとは、名古屋工業大学国際音声技術研究所によって作成されたオープンソースの音声インタラクションシステム構築ツールキットです。
mmdagent.jp から女性の音声データを以下の手順でダウンロードします。ダウンロードが完了したら、MMDAgent_Example-1.7.zip
を展開し、mei
ディレクトリ配下を /usr/share/hts-voice/
にコピーします。
$ wget http://downloads.sourceforge.net/project/mmdagent/MMDAgent_Example/MMDAgent_Example-1.7/MMDAgent_Example-1.7.zip
$ unzip MMDAgent_Example-1.7.zip
$ sudo cp -R ./MMDAgent_Example-1.7/Voice/mei /usr/share/hts-voice/
女性の音声エージェントを使用して、もう一度 音声を合成します。
$ open_jtalk -m /usr/share/hts-voice/mei/mei_normal.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow mei-normal.wav voice.txt $ aplay mei-normal.wav
音声が女性に変わりましたね。
MMDAgent には喜怒哀楽別に音声データが用意されている
女性の音声エージェントは感情別に何種類かあって、mei_normal.htsvoice
を使用していますが、好みに応じて変更して下さい。
$ ls /usr/share/hts-voice/mei/mei_*
/usr/share/hts-voice/mei/mei_angry.htsvoice
/usr/share/hts-voice/mei/mei_bashful.htsvoice
/usr/share/hts-voice/mei/mei_happy.htsvoice
/usr/share/hts-voice/mei/mei_normal.htsvoice
/usr/share/hts-voice/mei/mei_sad.htsvoice
読み上げ用スクリプトの作成
読み上げ用のスクリプトを作成します。今回は /usr/share/hts-voice/mei/mei_happy.htsvoice
を音声エージェントとして使用しています。
$ nano speak.sh #!/bin/sh TMP=/tmp/voice.wav echo "$1" | open_jtalk -m /usr/share/hts-voice/mei/mei_happy.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow $TMP && aplay --quiet $TMP rm -f $TMP
作成したシェルスクリプトのパーミッションを変更します。
$ chmod 755 speak.sh
京急線のアナウンスを読み上げてもらう
スクリプトを実行します。./speak.sh
の後に、読み上げて欲しいテキストを入力します。難しくない漢字もだいたい認識してくれます。Enterを押すと実行されます。
$ ./speak.sh 間もなく、一番線に、けいきゅう久里浜ゆきが、ふたつとびらで到着いたします。白線の内側まで、下がってお待ち下さい。次は、品川です。
実際の動画
※ 動画は10秒経ってから音声が始まります。
京急久里浜行き pic.twitter.com/L8jVdzJiBC
— Manami Taira (@mana_cat) 2017年5月4日
このように、比較的自然と読み上げてくれます。注意点としては、京急
だと きょうきゅう
と読み上げてしまうので、ひらがなで けいきゅう
にしています。
さて問題です。この駅はどこでしょうか?
おまけ。このエントリーとは関係無いけど、以前 撮影したくまモン体操(公開OK)をYouTubeにアップしていたので、こちらも見てね。
α7IIで動画を撮影、三脚無し、外部マイク無しでこんだけ録画できるんだからびっくり。
関連ページ
チョロQ Q-eyes コースガレージセット NISSAN GT-R 【日本おもちゃ大賞2014 イノベイティブ・トイ部門 優秀賞】
- 出版社/メーカー: タカラトミー
- 発売日: 2014/09/30
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る