HaloCodeの目玉機能である音声認識

 Makeblock社の教育用シングルボードコンピューターのHaloCodeは、ビジュアルプログラミングで、簡単に電子工作プログラミングを楽しみながら、様々なプロジェクトを作ることが出来る、比較的安価な製品です。

 教育用のシングルボードコンピューターという製品カテゴリには、Microbitや、より本格的なものとして、Arduino・RaspberryPiがあります。使う人の技術レベルや、目的によって使い分ける必要があるので、どれが優れているかどうかという話ではありません。

 HaloCodeは、同様の製品カテゴリ内の中で、かなり簡単にプログラミングが出来(Scratch3.0ベースまたはScratch)る点、にもかかわらず、WiFi接続が可能なチップを搭載し、インターネット接続を使ったプログラミングが出来るという部分で、IoT時代の初期のSTEAM教育シーンなどで、活躍が期待されます。
 まあ、Microbitをやっていた人からすると、マイクが標準搭載という際なので、音声認識を使いたくなりますわな。

 今回は、HaloCodeの様々な機能の中でも、特に注目されている「音声認識が手軽に楽しめる」機能について検証した内容と、Makeblockユーザーコミュニティ内で議論した、ワークショップで使う際に、気を付けた方が良い内容をご紹介していきたいと思います。
 

Makeblock社のサンプルコードで、音声認識を試してみる

まずは、Makeblock社がリファレンスとして公開しているサンプルコードで音声認識を試してみます。

事前に準備するもの

・HaloCode 1個 (MicroUSBケーブル必須)
・PC(Windows・Mac )
・mBlock5の環境準備
 ※mBlock5はPCにインストールするローカル版と、mLinkというドライバをインストールして
 使えるWEBブラウザ版があります。
 ダウンロードはこちら:http://www.mblock.cc/mblock-software/
 ブラウザ版URLはこちら:https://ide.mblock.cc/

mBlock5の環境設定

上記を準備したら、mBlock5の環境設定です。と言っても、音声認識を使うために必要な環境設定は、以下の4つです。

・WiFi環境にいる
・PCをインターネットに接続する
・mBlock5のユーザー登録をする
・HaloCodeとPCを接続する
→接続方法に関してはこちらの記事をご参照ください。
参考記事:HalocodeとmBlock5でプログラミングを簡単に楽しむ

 この中で注意が必要なのが、mBlock5のユーザー登録です。mBlock5のユーザー登録をしないまま、プログラミングを進めることは可能ですが、WiFiを使った音声認識機能やユーザークラウドメッセージといった機能を使う場合は、ユーザー登録が必須になります。
 理由は、両機能とも、mBlock5サーバーに接続する必要があり、そのサーバーを使うための登録が必要という事になります。メールアドレスと、パスワードのみで対応可能です。

HaloCodeのサンプルコードで音声認識を試してみる

ここまで準備したら、まずは、↓の音声認識サンプルソースコードを作って試してみます。

音声認識サンプルソースコード

さて、これはMakeBlock社の公開しているサンプルソースコードですので、基本は上手くいくはずです。

HaloCodeの音声認識がうまくいかない理由は何なのか??

 ただ、100%の確率で全て成功するとは限らないというのが、私の検証結果です。
 上手くいかない場合になぜなのか?悩む際に、まずは、そもそもの仕組みを理解しておく必要があります。

HaloCode WiFi接続の図

 上の図でも分かるように、音声認識は、マイクロソフト社の音声認識サービスを使っています。そのサービスにmBlock5のサーバーが接続されるイメージかと思います。このことを理解したうえで、上手くいかない理由を考えてみると、例えば、以下のような事があげられます。

・ そもそも、日本人英語の発音の影響で上手く認識されない

・タイムラグを考慮せずに、繰り返し話しかけてしまう。

→上手くいったときの時間を計ってみたところ、結果が返ってくるのに、15秒くらいでした。上記のプログラムは音声認識時間が3秒間。その後、マイクロソフトのサーバーにデータが送られ、判断され、結果が送り返されるのに、十数秒はかかるというイメージでかと思います。やっていると意外と、時間がかかるイメージなので、そこで待ちきれずに連呼すると、上手くいかない場合が多かったです。

・認識されないからといって、マイクに口を近づけて大声で叫ぶ

→マイクを音量センサーとして使った場合に、検知精度がそこまで悪いわけではなかったの、声が小さいとか、そういうことはあまり関係がないと思われます。どちらかというと、ノイズみたいな感じの音声データになってしまうため逆効果になる可能性があります。まあ、そうやりたい気持ちは痛いほど分かります(笑)

・mBlock5サーバーとマイクロソフトの音声認識サービスの接続がうまくいっていない可能性。
→これはどうしようもありません。少し時間おいて試してみるしかありません。

・HaloCodeがWiFiにはつながっているが、WiFiのインターネット接続自体が安定していない。
→WiFiが正常なネット接続なのかどうか、PCなど他のデバイスを繋げてて増してみましょう

・WiFi環境によっては、得体のしれないWiFiデバイスからのデータ送受信は遮断している可能性
→これはHaloCodeで試せていないのですが、もしかすると、試すWiFi環境によっては、セキュリティの問題などで、そのWiFi環境を構築している施設側で訳の分からないデバイスと外部との接続を遮断している可能性があります。家とか、オフィスでは繋がったのに、公共施設やセキュリティの厳しそうな建物で提供しているWiFi環境では注意が必要な気がします。(経験上の話なので技術検証まではしきれていません)

HaloCodeの音声認識サービスをワークショップで使いたい場合どうするか?

 HaloCodeは、安価な分、様々な場所で、色々なプログラミングワークショップに使われる場面が想定されます。
 しかし、上記の理由から、HaloCodeの音声認識をワークショップで実施する側としては、当日上手く接続できなかったら。。。という、とてつもないリスクを負う必要があります。

 実は、Makeblockユーザーコミュニティでも、その事で悩んでいるメンバーの方がいて、様々な意見が出ました。その中で、まずは、その場所のWiFi環境でHaloCodeが繋がるかどうかは事前に確認することはした方がよいという事で、環境によるリスクは減らすこと出来るということは当然ながらありました。
 それでも当日音声認識がうまくいかない理由を見分けるためとして、HaloCodeに発した言葉が、音声認識しているかどうかを、試せるプログラムを入れておけばいいのではないか?という案がコミュニティメンバーの方から出ました。

 そのメンバーさんのアイデアは、ユーザークラウドメッセージで音声認識結果をパンダに送り、音声認識結果をパンダがしゃべってくれる形です。
 間違っていても英語としてパンダがしゃべってくれるので、どこが違うかの把握も出来る、というのがそのメンバーさんのアイデアです。

HaloCodeのユーザークラウドメッセ―ジについては、こちらをご参照下さい。
参考記事:HaloCodeのメッセージ機能徹底解説

HaloCodeソースコード

音声認識_ユーザークラウドメッセージで検証ソース

スプライト(パンダ)のソースコード

HaloCode_ユーザークラウドメッセージ_スプライトソースコード
※こちらのソースコードは、そのコミュニティメンバーさんに許可を得て公開しております。
そちらんメンバーさんは、門前中町のFlyNexiaというアフタースクールでプログラミング講座を担当している方です。紹介記事はこちら:ユーザーストーリー

例えば、上記のプログラムを実行すると、「red」と話しかけたときで、LEDが赤く光らなかった場合も、以下のスプライト(パンダ)の挙動で、状況を把握することが可能になります。

■パンダが「red」以外の言葉を発する場合
例えば「led」「lead」などを発音する場合は、音声認識サービスまではデータが行っていることになり、単に発音の問題であるという事になります。

■パンダが何も言わない場合
何も言わない場合は、音声認識サービスとHaloCode間
で、データ送受信にトラブルがあるか、英語として認識されていない事が想定されます。英語として認識されない場合は、何回か試せば、何かしらは認識するので、問題の特定は、楽になります。

 HaloCodeの音声認識機能は、非常にキャッチ―な感じの機能ではあるものの、万能な完成された感じではないので、子供向けのワークショップなどを行う際は、こちらでご紹介した内容をしっかり理解したされて、当日も楽しく進行して頂けたらと思います。
 トラブルを乗り越えて音声認識がされたときのお子さんたちの喜ぶ顔は、ワークショップをする側としてもテンション上がりますよね。 

 ちなみに、この音声認識機能は、mBlock5サーバーを必ず利用しますが、1アカウントにつき、1日200回までしかmBlock5サーバーを介したサービスは使えないという隠れキャラ的制限が存在するようです。200回を越えると↓のようにメッセージが出て、サービスが使えなくなるという情報も、上記のユーザーコミュニティメンバーさんからご提供頂きました。

mBlock5_サーバー利用回数200回制限画像