音声認識自動ドア

情報技術科 No.7 岡田 匠矢

①研究の背景

近年コロナウィルスの流行により様々な影響があった。コロナウィルスの感染の可能性は、飛沫感染、濃厚接触による感染、空気感染等が挙げられる。 その中でも濃厚接触による感染はしやすい。なぜなら生活の中で最も触れる場所があるからです。それはドアノブです。それはウィルスに感染する可能性があるので危険と感じ、この装置を開発しようと考えました。

②仮説とねらい

もしコロナウィルス(それに限らず)に感染している人がドアノブに触れ、その後他の人がそこにふれてしまったら感染の恐れがある。ならばドアノブに触れることなくドアを開けることができれば感染の拡大をおさえることが出来ると思う。

③研究内容

ドアノブに触れることなく、マイクで音声を認識しドアノブをモーターによって自動的に回す装置の開発。(ドア自体は肘や足で開けてもらう)

マイクで認識させる単語
例)開けて、開けてください、ひらけごまなど…

④技術的知識

モーターの制御や、音声認識の制御をするため、それに適しているラズベリーパイを使用する。

音声を認識するためのツールが必要なのでその中でもメジャーで高性能なJuliusというツールを用いて音声認識を行う。

Juliusについて

•連続音声認識エンジン

•無料

•数多くのプラットフォームで動作

•プログラミング言語と組み合わせて動作可能

Google Cloud Speech API等の音声認識APIとの違い、無料で環境の制限がない為使いやすかった。

Juliusの動作原理

モーターの動作は、ラズベリーパイに内蔵させたPythonという言語を扱い動作させる。

GPIOピンでモータの制御を行う。

ラズベリーパイにオーディオジャックの端子はあるが、出力として設定されているため音声の入力ができないので、USBマイクを用いて音声の入力を行う。

モーターの回転速度が早すぎるとドアノブが限界以上に回ってしまう可能性があるのでゆっくり回転するサーボモーターを用いていく。

⑤取り組んだ内容

Juliusの特性について知っていった。

  • 強く言うところや濁音、半濁音などは約90%の認識率​だった。
  • 固有名詞は認識率が10%以下​と著しく低下した。
  • 区切って発音で80%ほどの認識率​となった。
  • 伸ばし棒は認識率が低下​していった。
  • 母音の等しい別単語の認識率は、しっかりと区別して認識された。

精度向上のために辞書を作成した。

読みファイルの作成

音素ファイルの作成

構文ファイルの作成

語彙ファイルの作成

~/julius/julius-4.4.2.1/gramtools/mkdfa/mkdfa.pl ~/julius/dict/greeting ←辞書作成コマンド

これらをまとめて、辞書ファイルを作成しました。
今回は、Juliusの特性を踏まえて辞書を作りました。
例)オープン、開けごま、ドアを開けて...

モータ制御のプログラムをPythonにて作成した。

wp.wiringPiSetupGpio()    pin の番号でピン指定するモード
wp.pinMode(servo_pin, 2)  出力ピンとして指定
wp.pwmSetMode(0)           0Vに指定
wp.pwmSetRange(1024)     レンジを0~1024に指定
wp.pwmSetClock(375)      

wp.pwmSetClock(375)の解説
PWM周波数=RaspberryPiのPWMが持つベースクロックの周波数/(clock×レンジ)
サーボのPWM周波数が50Hz、RaspberryPiのPWMが持つベースクロックの周波数が19.2MHz、レンジが1024だから、clock=18750/50=375 になる。

move_deg = int(81 + 41 / 90* set_degree) 
wp.pwmWrite(servo1_pin, move_deg)

パルス幅の計算を行っており、角度を指定するとその角度にモータが回転するようになっている。

また、音声認識との連携を可能にした。

’あけて’の部分で認識した言葉を指定し、一致していればモータが回るようにプログラムを組んだ。ServoMyServoの数値はモータの角度を指定している。

⑥結果

モータのパワーが足りず、ドアノブを回転させることができなかった。
その代わりとして、ドアの模型を作成し、その模型のドアノブをまわすことで
ドアノブを回すという動作を可能とした。

⑦感想・考察

感想
音声認識でモータを制御することはできたが、実際にドアノブを回転させることはできなかった。もう少し環境を考えて研究に取り組んでいくべきであったと思います。音声認識の精度は、辞書を作る、強く発言するなどの方法で精度向上させることができたが、ディープラーニングに比べると劣っていると思うので、時間がある場合は精度向上にはディープラーニングを用いていくべきであるとおもいました。

考察

模型という形での結果になってしまったが、モータのパワーや環境が変われば実際にドアノブを回せると思う。
今回はドアノブを回すというところに注目していたが、モータを使えばスイッチなどのon/offやドアノブではなくドアのカギを回転させカギを開けるということも音声認識で行うことができるのではないかと考えられる。
音声認識などの非接触の製品が今後も重要視され、普及が進んで行くと思います。その中で大切な精度向上の大変さや、製品を作る上での実証実験の大切さをこの課題研究を通して感じました。

コメントを残す

メールアドレスが公開されることはありません。