音声リモコンの仕組み

 音声認識した結果を受け取って、ロボットの動きをコントロールできる音声リモコンを作成しましょう。図18が音声リモコンを実現するシステムの全体図です。左側のマイク、サウンドカード、「Julius」の部分については既に作業しました。「gpio」や「jtalk」といった部分(コマンドで実行するツール)も既にそろっています。

図18●音声リモコンの概要

 図18の中でまだ用意していないのは「Julius」と「gpio」や「jtalk」をつなぐプログラム「voice-remocon」です。

 Juliusはバックグラウンドで常に動いていて、外部から取り込まれる音声を認識しています。その結果を別のプログラムに渡すために「ポート10500」を使います(「ポート」とはデータをやり取りするための出入り口のことです)。このポートに接続してきた別のプログラムにその結果を渡すのです。

 このように別のプログラムに何かしら情報を提供する(情報サービスをする)プログラムのことを「サーバー」といいます。つまり、Juliusは音声認識した結果を情報として提供するサーバーとして機能しており、その結果を別のプログラムにデータとして渡せるように「ポート10500」を利用しているのです(このポートに接続した別のプログラムに情報を提供するわけです)。

 一方、サービスを受け取る側のことを「クライアント」と呼びます。「voice-remocon.py」はJuliusから提供される音声認識結果を受け取るプログラムなので、このプログラムのことを「Juliusクライアント」と呼ぶことにします。Juliusクライアントは、Juliusサーバーから情報を受け取り、最終的にGPIOピンを制御したりjtalkを起動したりするのがその役割です。