ei科 No.5 太田 翔馬
①研究の背景
リモコンやスイッチが多くあり紛失してしまう、電池替え等の手間をリモコンを統一することによって解決する
②仮説とねらい
ラズベリーパイを用いれば操作端末を統一することが出来そうである。
音声で操作することにより、目の不自由な方でも簡単に操作することが可能になる。
IoTが進化するなか、音声認識をテーマにしたモノを自分で一から作成するため。
③研究内容
上図の赤外線送受信拡張基板(adrsir)を用いて赤外線の送受信を行う。
adrsirは学習モードと操作モードがあり、学習モードでは受信した赤外線のフォーマットを記録することが出来る。操作モードでは記録した赤外線を発射する事が出来る。
マイクによる音声による入力を行ったのちに内部処理を施し、結果を赤外線送受信拡張基板に出力し、赤外線によって家電操作を実現する。
④技術的知識
Juliusをモジュールモードで起動するとサーバーとして起動されるため、プログラムで操作を加えるにはソケット通信で行う。このためpythonを用いることにした。
赤外線拡張基板はRaspberry Pi上のGPIOに接続する。
また、音声認識を実現させるためにjuliusというフリーの高性能音声認識ソフトウェアを用いて実装を目指す。
juliusでも独自の言語のようなものがあるのでそれについては回数を重ねながら理解を深める。
音声入力機器としてUSBマイクを用いる。(Raspberry Piではオーディオジャックが出力として設定されているためUSB入力のものを用いる)
以下のサイトの要所を参考にしながら進める。
(http://workspacememory.hatenablog.com/entry/2018/05/27/145021)
赤外線のフォーマットはリモコンによって異なり、日本の家電の赤外線フォーマットにはNEC/家製協/SONYフォーマットが多く用いられる。これらの異なる赤外線を解析するために、ビットトレードワンが提供している解析プログラムを用いる
⑤取り組んだ内容
adrsirに赤外線を送信し学習モードで記録する。記録したフォーマットを解析プログラムで解析し、datファイルとして保存する。
全体操作プログラムではsubprocessを用いて赤外線の送信プログラムを実行するようにした。
subprocess.call(“python IR-remocon002.py r 0 < filename.dat”)
Juliusをモジュールモードと呼ばれるプログラムと通信できるモードで起動しpyhtonのプログラムとの通信を待機する。別ターミナルでpythonの操作プログラムを実行し操作を開始する。
⑥結果
音声で家電を操作できた。目の不自由な方でも家電によって異なる物理的な「リモコン」を意識せずに直感的に操作が可能になりました。
リモコンを統一するため家電によって異なるリモコンを探し操作する必要が無くなります。また、ラズベリーパイの電源供給形態によっては電池交換をする手間がなくなります。
認識精度がとても悪いため、誤認識が多い。辞書内の語彙に当てはめるため、マイクに声でなくとも、なにか音が入ってしまうと認識されてしまうので大きな課題となった。
⑦考察・感想
音声認識そのものは簡単だったが精度を上げるのがとても難しかった。最初からディープラーニングを視野に入れていればよかったと思う。
精度は悪いが音声によって家電を操作することが出来たという点では満足できた。