Raspberry Piをしゃべらせてコドモ達を起こせ その1
meiの声でコドモ達を起こせ
コドモ達の部屋の目覚まし時計が鳴らなくなってしまいました。そこでRaspberry Piと音声合成システムを使って、目覚まし時計のようにしてみます。動作している様子はこちらです。
用意した物
Raspberry Pi 1 Model B
ブレッドボード
白色LED
抵抗 1kΩ 1/8[1]適宜変更してください
ジャンパー線
スピーカー[2]アンプ内蔵の小さなアナログ接続スピーカーです
OSはRaspbian Stretch 9.1です。
Open JTalkのインストール
日本語テキスト音声合成システムのOpen JTalkをインストールします。
$ sudo apt install open-jtalk
提案パッケージが2つあるのでインストールします。これは辞書ファイルと音声ファイルとなります。
$ sudo apt install open-jtalk-mecab-naist-jdic $ sudo apt install hts-voice-nitech-jp-atr503-m001
この3つをインストールしたらヘルプを表示してバージョンを確認します。
$ open_jtalk -h
Version 1.07がインストールされました。
2017/11/30時点ではVersion 1.10(2016/12/25 )が最新となっています。
meiのインストール
先ほどインストールした「hts-voice-nitech-jp-atr503-m001」は男性の声です。
次に女性の声もインストールします。
MMDAgentに「mei」という名前の声があります。これをwgetでダウンロードします。
$ wget http://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.7/MMDAgent_Example-1.7.zip/downloadRaspberry pi
ダウンロードされたファイル「download」を解凍します。
$ unzip download
解凍すると「MMDAgent_Example-1.7」のフォルダが作成されます。
この中には音声以外のファイルが多数あります。その中で必要なファイルを抜き出します。
「Voice」フォルダの中の「mei」フォルダを「/usr/share/hts-voice/」にコピーします。
$ sudo cp -R ./MMDAgent_Example-1.7/Voice/mei /usr/share/hts-voice/
しゃべらせるスクリプトの作成
シェルスクリプト「jsaymei_normal.sh」を作成します。
#!/bin/sh # 発声方法「$ ./jsay.sh 例文」 # mei_normalで発声する TMP=/tmp/jsay.wav echo "$1" | open_jtalk \ -m /usr/share/hts-voice/mei/mei_normal.htsvoice \ -x /var/lib/mecab/dic/open-jtalk/naist-jdic \ -ow $TMP && \ # 音声ファイルを再生する aplay --quiet $TMP # 音声ファイルを削除する rm -f $TMP
アクセス権を変更します。
$ sudo chmod 755 jsay.sh
音量の調整
今回はアナログ出力[3]出力先は環境により適宜変更する必要がありますで音を出力します。デフォルトでは音量が「40」となっています。
これだと小さいので「90」に変更します。
$ alsamixer
フェーダー[4]つまみの表示はありませんのような縦棒グラフのようなものが表示されます。
音量を変更するには十字キーの上下を使用します。「Esc」キーで完了です。
しゃべらせる
先ほどのスクリプト「jsay.sh」+引数(しゃべらせたい文)で発声できます。
$ ./jsaymei_normal.sh こんにちは。メイです。
やっとしゃべってくれました。思ったより普通に発声します。
このような短文では良いのですが、長文にすると発声までの時間が数秒掛かるようになります。
もっと速いマシンで行えば変わってくるのかもしれません。
まとめと次回
次回はしゃべらせる言葉を目覚まし用に変更して。アラーム音を付けます。毎朝実行するようにし、
さらにmeiの声のバリエーションをしゃべらせて見たいと思います。
ブレッドボードのLEDも光らせます。
アナログ出力からアンプ内蔵スピーカーの組み合わせは、音量は問題なしです。
ボリュームが控えめでも目覚まし用としては十分です。ただRaspberry Piと接続するとハムノイズが僅かにでます。
耳元から離しておけば気にはならないレベルだと思われます。