できること

ラズパイでスマートスピーカーを自作しよう!【第3回】

会話をリアルタイムに記録、自動でテキスト化するスマート議事録デバイス!

 

第1回:Google AIYを使って、日本語対応スマートスピーカーをサクッと作る
第2回:部品を自作して、押したらGoogleがしゃべり出すPush to Talkを完成させる

 

こんにちは、ヨシケンです!ラズパイでスマートスピーカー、便利に使っていますでしょうか?
今回はGoogle AIYの様々な仕組みの中でも、リアルタイム会話機能Cloud Speechを使っていきたいと思います。ミーティングなどの会話をリアルタイムで記録し、自動的に議事録にする夢のような機械になるはずです。いつも通り、100円ショップなどで買える手軽な部品をフルに使って作り上げますので、気軽にお試しあれ!

AIY03_01

今回の記事で必要なもの一覧

・Raspberry Pi 3 Model B
Raspberry Pi 3 Model B

・小型USBマイク
小型USBマイク
ここから先は100円ショップなどで手軽に手に入る部品達です。

・スピーカー(アンプ、USB付きの300円スピーカー)
スピーカー
・ケースとプッシュLEDライト
ケースとプッシュLEDライト
・小型バッテリー(3,000mAhで500円)
小型バッテリー

 

今回の記事の流れ

1.Google AIYとハードウェアの設定
2.Google Cloud Speechのカスタマイズ
3.AquesTalkによる日本語発話
4.特定文字検出と議事録テンプレートを作る
5.メール送付機能を付けて、自動議事録装置を作り上げる
6.まとめ

 

1.Google AIYとハードウェアの設定

今回もGoogleの音声機能などを簡単に使えるようにしたGoogle AIYを基本として使っていきます。
まだラズパイにインストールしていない方は、前回までの記事を見て、Google AIYが動くようにしておいてください。

ハードウェアも前回に引き続き、100円ショップなどで買える部品のボタンやスピーカーを利用します。
手軽に手に入るものですが、アンプ付き、ボリューム調節ができるツインスピーカーなどさまざまな種類があります。これらを分解し、USBが付いているメインのスピーカーだけ取り出します。

USBが付いているメインのスピーカーを取り出す
このメインスピーカーについているラジオジャックとUSBをラズパイにつないでください。それだけで大きな音が出せますし、手前に見えるアンプ基板でボリュームの変更もできるのでとても便利です。

ラジオジャックとUSBをラズパイにつなぐ

またLEDプッシュボタンを改造して、音声録音のスタート、終了を操作できるようにします。ボタンを押してLEDが光っている間ずっと会話を聞いている状態にします。もう一度押して、LEDが切れると録音が止まるようにします。

前回のようにプッシュLEDを分解して、写真のように、青いマイナス端子をラズパイのGNDに、プラス部分の赤とラズパイの5V、ボタンの3本目の端子とGPIO16番につなぐようにします。

LEDをラズパイにつなぐ
ハードウェアの用意ができたら、これをGoogle AIYの仕組みの中で使えるようにして行きます。

 

2.Google Cloud Speechのカスタマイズ

Google AIYの中には前回使ったHotwordやPushtotalk以外にも、便利なサンプルプログラムが入っていて、それをカスタマイズすることで会話に対応したさまざまなアプリケーションを作ることができます。
今回はその中のひとつ、リアルタイム音声認識のCloud Speechを使います。AIY階層下に、smartというプログラム・フォルダを作り、そこにcloudspeech_demo.pyなどのファイルをコピーします。

$ sudo mkdir ~/AIY-projects-python/src/smart
$ sudo cp ~/AIY-projects-python/src/examples/voice/* ~/AIY-projects-python/src/smart/

$ cd ~/AIY-projects-python/src/smart/

$ sudo cp cloudspeech_demo.py cloudspeech_minutes.py

cloudspeech_minutes.pyとリネームした議事録作成プログラムに、機能を付け加えていきます。
先ほどのラズパイのGPIO16につないだボタンを押すと、Cloud Speechの仕組みが動き出すよう、以下の部分を確認、変更します。

[cloudspeech_minutes.py 追加部分]

次に、Cloud speechのデフォルトは英語の応答になっているので、これを多言語化(日本語化)します。aiyフォルダに入っているi18n.pyというプログラムで言語が設定されているので、ここにスピーチ言語をパラメータとして渡すようにします。日本語の会話を聞き取るように、デフォルト言語に日本語ja-JPをセットします。

[cloudspeech_minutes.py 追加部分]

それでは日本語で会話が録音できるか試してみましょう。このプログラムはPython3系のファンクションを使うので、python3 cloudspeech_minutes.py –speech ja-JP などとして流します。

プログラムを流す

ボタンを押すと、LEDが光り、音声を聞き出してくれるはずです。

LEDが光り、音声を聞き出してくれる

しゃべった言葉を見事、日本語のテキストにしてくれたでしょうか?他の言語でも–lang en-USなどとして試してみてください。

 

3.AquesTalkによる日本語発話

Cloud Speech自体は日本語を含む多言語に対応しています。しかしこれを発話させるaiy.audioというプログラムは、英語、スペイン語などの6ヵ国語のみで、日本語が話せません。
日本語がちゃんと記録できているか、その内容を日本語でリピートしてもらいましょう。日本語合成で代表的なAquesTalkというプログラムを使って、日本語発話させます。
公式サイトから圧縮ファイルをPCにダウンロードし、ラズパイに転送します(raspi.localの部分はご自身のホスト名)。これをラズパイ上に解凍するだけで、指定した言葉をローカルで日本語発音してくれます。ためしに“こんにちは”など話させてみましょう。

(ダウンロードしたPCから) scp aquestalkpi-20130827.tgz pi@raspi.local:AIY-projects-python/src/(ラズパイにログオンして) $ tar zxvf ~/AIY-projects-python/src/aquestalkpi-20130827.tgz

$ cd ~/AIY-projects-python/src/aquestalkpi

$ ./AquesTalkPi “こんにちは” | aplay

AquesTalk

かわいい声で日本語を話してくれたでしょうか?公式ブログには、声のスピードや声色の変更オプションが載っているので、いろいろ試してみてください。
これができたら、先ほどのcloudspeech_minutes.pyに組み込みます。

[cloudspeech_minutes.py 追加部分]

これでpython3 cloudspeech_minutes.py –speech ja-JP –repeat speech などと流すと、スピーチした言葉をそのままオウム返しに発話してくれるはずです。

 

4.特定文字検出と議事録テンプレートを作る

日本語を聞くのと話すことができるようになったので、ここからは議事録っぽい体裁を作って行きます。打ち合わせの中で、いくつか特徴的な言葉を検知して、それを議事録作りに役立てます。
例えば、ミーティングの最初に、「〇〇〇の議事録」という言葉を発すると、「議事録」という言葉を検知して、文章の表題にするようにしてみます。

[cloudspeech_minutes.py 追加部分]

議事録の体裁を作るために、make_minutesというファンクションを作ります。この議事録テンプレートはあくまでサンプルですので、ご自身の打ち合わせスタイルに合わせていろいろ変えてみてくださいね。

[cloudspeech_minutes.py 追加部分]

さあこれで議事録の形ができました。
python3 cloudspeech_minutes.py –speech ja-JP –repeat speechと流して、議事録の形になればOKです。

議事録の形

 

5.メール送付機能を付けて、議事録作成装置を作り上げる

では、先ほど作った議事録をメール送付できるようにしておきます。以下のように、ssmtpとmailutilsという簡易メールサービスをインストールします。ssmtp.confという設定ファイルのやり方は、以前のメール設定の記事も見て、セットしてくださいね。

$ sudo apt-get install -y ssmtp mailutils
$ sudo vi /etc/ssmtp/ssmtp.conf

簡易メールサービスをインストール

ラズパイからご自身のメールに、適当な文言を送ってテストしてみます。

$ echo “議事録内容です。” | mail -s “議事録表題” xxx@hotmail.com

最後に、打ち合わせを終える終了ワード(終わりです、など)を検知したら、これまでの議事録作成、メール送付の仕組みが動くようにします。

[cloudspeech_minutes.py 追加部分]

全てのプログラムができたところで、ボタン、スピーカー、ラズパイ、電源などを組み込んで、議事録デバイスを完成させましょう。この組み合わせ方はあくまで一例です。外装は皆さんのセンスに任せて形作ってみてください。

議事録デバイスを完成

各部品を上手くケースに入れ込んだら、完成!会議室に置いても違和感ないデバイスになったでしょうか?

完成した議事録デバイス
では、python3 cloudspeech_minutes.py –mail xxx@hotmail.com などとメールアドレスをセットして、議事録プログラムを起動してみましょう。こちらの動画も参考に見てみてください。

ボタンを押すと聞き始め、「プロジェクト議事録」や「さよなら」など特定語句を聞き取り、見事議事録を作ってくれたら成功です。このようなメールが送られてきたら、まさか機械が自動的に生成したものとは、一瞬分からないのではないでしょうか!?

送られてきたメール

 

6.まとめ

今回は、Google AIY機能のうち、リアルタイム音声認識のCloud Speechを使いました。しゃべるたびにそれをテキスト変換し、更に自動で議事録フォーマットにしてくれるのは、なかなか驚きの機能ではないでしょうか?今回は主に日本語の議事録専用に作りましたが、–langの部分や議事録フォーマットを変えたりして、英語など他の言語での議事録作成にもチャレンジしてみてください。

プログラム[cloudspeech_minutes.py]のファイルはこちらからダウンロードできるようになっています。参考にしてみてください。

次回はこの会話機能を更に拡張して、翻訳機能も付けたデバイスを作って行きます。お楽しみに!

 

 

今回の連載の流れ

第1回:Google AIYを使って、日本語対応スマートスピーカーをサクッと作る
第2回:部品を自作して、押したらGoogleがしゃべり出すPush to Talkを完成させる
第3回:会話をリアルタイムに記録、自動でテキスト化するスマート議事録デバイス!(今回)
第4回:遂に夢の翻訳こんにゃく?スマートほんやくイヤフォン
第5回:旅先で便利に使える!? 外国語読み取り自動翻訳メガネ!

アバター画像

普通の会社に勤めるサラリーマンですが、モノ作りが好きな週末メイカーで、電子書籍MESHBOOKを出したり、ブログを書いたりしています!

http://blog.ktrips.net

高専ロボコン2019出場ロボット解剖計画