AI音声認識 ― 声でLEDをあやつろう

総合・探究

マイクに向かって話した言葉を、AIの音声認識で「文字」に変えて、プログラムで使います。「赤」と言えば赤く、「ハート」と言えばハートが光る音声コントローラーを、ステップごとに作成。1回だけ聞く方法と、ずっと聞きつづける方法のちがい、聞きまちがいへの対策まで体験。声でドットを動かす発展プログラムと英語版つき。

中学校~ 初級 60

ここでやること

今回は、マイクに向かって話した言葉でLEDをあやつる「音声コントローラー」を作ります。スマートスピーカーや音声入力と同じ、AIの音声認識を自分のプログラムで使ってみよう。
  • 声を文字に変えて、LEDに流す
  • 「赤」「青」……言葉でLEDの色を変える
  • ずっと聞きつづけるライトを作る(ハート・星・にこにこ)
  • 聞きまちがいと、その対策を体験する
全体の流れ(約60分)
ステップ内容目安
準備プロジェクトを作り、LEDパネルをつなぐ。マイクをたしかめる10分
ステップ1声を文字にして、LEDに流す10分
ステップ2言葉で色を変える ― 「〜を含む」15分
ステップ3ずっと聞いてくれるライト ― 連続の音声認識15分
応用・発展聞きまちがい対策、声でうごくドット、英語版10分〜

音声認識ってなに?

人の声は、空気のふるえ(音)です。音声認識は、その音のデータから「なんと言ったか」をAIが推測して、文字に変える技術。たくさんの人の声を学習したAIが、音の特徴から言葉を当てています。
プログラムから見ると、だいじなのはここ。声は「文字」になってプログラムにとどく。文字になってしまえば、あとはいつもの「もし〜なら」で判定できます。

準備しよう

プログラミング画面を開こう。
「新しいプロジェクトを追加する」をクリックすると、プロジェクト作成ウインドウが出るので、「作成」をクリックしてプログラミング画面を開きます。
SPACEBLOCKをパソコンにつなげよう。
プログラミング画面を開くとデバイス接続ウインドウが表示されるので、SPACEBLOCKとパソコンをUSBケーブルでつなげます。つなげたら「USBで接続する」をクリック。新しくウインドウが表示されるので「SPACEBLOCK」をクリックしてから「接続」を押します。
※2回目からは自動でSPACEBLOCKがパソコンとつながります。
8×8 LEDパネルをつなげよう。
USBケーブルの隣にある横向きピンソケットに、LEDパネルが立つように写真のようにつなげます。
※LEDパネルをつなげた後に本体を持つときは、パネルではなく本体を持ちましょう。
🎤 マイクについて
  • パソコンやタブレットのマイクを使います(SPACEBLOCK本体のマイクではありません)
  • ブラウザは Google Chrome がおすすめ(Microsoft Edge でも動きます)
  • はじめて実行すると「マイクの使用を許可しますか?」と聞かれるので「許可」をえらぶ
  • 本体が手もとになくても、シミュレータのLEDで同じようにためせます
  • まわりがにぎやかなときは、マイクに近づいて、はっきり・短く話すのがコツ

音声認識のブロックを知ろう

音声認識のブロックは「API」カテゴリの下のほうにあります。3つのグループに分かれています。
音声認識のブロック
グループブロックはたらき
1回だけ(日本語) で音声を入力する モード: きく時間:実行するとその場で1回聞いて、聞きとった言葉を文字で返す。聞きおわるまでプログラムはそこで待つ
連続(日本語) で音声入力を開始する / 停止する裏でずっと聞きつづける。プログラムは止まらず先へ進む
連続(日本語) の音声が入力されたとき言葉が聞きとれるたびに、中のブロックが動く(今回は使いません)
結果最後に入力した言葉最後に聞きとった文字
結果入力した言葉に「 」が含まれる最後の言葉にその文字が入っていれば「真」

ステップ1 声を文字にしてみよう

まずは、聞きとった言葉をそのままLEDに流してみます。文字列の変数「ことば」を作り(「変数を追加する...」で型を「文字列」に)、「1回だけ」のブロックをはめます。それを「文字をスクロール表示」のブロックに入れれば完成。
QR code for project
実行すると、画面に「音声入力」のウインドウが出ます。「聞いています…」のあいだにマイクへ話しかけよう。話しおわると自動で確定して、LEDに文字が流れます。
いろいろ話して、どんな文字になるか観察しよう。「終わり」「終了」と言うと、ループを抜けてプログラムが終わります(この先のプログラムも全部同じ合言葉で終われます)。
  • 「あか」と言うと あか? (多くの場合、漢字まじりの文になります)
  • 長い文、早口、小さな声ではどうなる?
  • モード「手動」にすると、聞きとった言葉を見てからOKできます。きく時間を「5秒」にすると、5秒で打ち切ります
❓ ステップ1のかくにん
「はし」「あめ」のように、同じ音でちがう意味の言葉を言うと、AIはどちらの漢字をえらぶ? 前後に言葉を足すと(「あめがふる」)変わるかな?

ステップ2 言葉で色を変えよう ― 「〜を含む」

聞きとった文字を「もし」で判定します。ここで使うのは「文字列」カテゴリの「( ) が ( ) を含む」。「=(ぴったり同じ)」ではなく「含む」を使うのがポイントです。
なぜかというと、音声認識の結果は「赤」だけとはかぎらず、「赤にして」「赤色」「えっと赤」のように前後に言葉がつくことが多いから。「含む」なら、どれでも反応できます。
もう1つの工夫は「または」。同じ「あか」でも、聞きとった結果が漢字の「赤」になるときと、ひらがなの「あか」になるときがあります。そこで「論理」カテゴリの「かつ/または」を使い、「赤」を含む または「あか」を含む、と両方で受けます。
下のプログラムは、「赤/あか」「青/あお」「緑/みどり」で色が変わり、「消/けし」(消して)で消えます。「繰り返す」の中に入れているので、光ったらまたすぐ次の言葉を聞きにいきます。一番上の「もし」が終わりの合言葉で、「終わり」「終了」と言うと「ループから抜け出す」で繰り返しを終わり、消灯してプログラムが終わります。
QR code for project
❓ ステップ2のかくにん
「赤と青」と言うと何色になる? それはなぜ?(ヒント:「もし/でなくもし」は上から順に調べて、最初に当てはまったところだけ動く)

ステップ3 ずっと聞いてくれるライト ― 連続の音声認識

ステップ2は、毎回ウインドウが出て、聞きおわるまでプログラムが待っていました。連続の音声認識を使うと、裏でずっと聞きつづけてくれます。
  • 「プログラム開始」の下で「(日本語) で音声入力を開始する」を1回だけ実行
  • 「繰り返す」の中で、「入力した言葉に「 」が含まれる」を使って、最後に聞きとった言葉を調べつづける(変数に入れなくてよいので短く書けます)。ここでも漢字とひらがなの両方を「または」で受けています
  • 「終わり」「終了」と言うと「ループから抜け出す」→ 消灯 →「音声入力を停止する」で、プログラムが終わります
「繰り返す」はそのままだとずっと終わりません。声で終わらせる出口を作っておくのが、音声コントローラーのだいじなポイントです。
ことばと動き
言うことばLED
赤・あか / 青・あお / 緑・みどりその色で全体が光る
ハート・はーと赤いハート
笑・わら(笑って・笑顔)黄色のにこにこ
星・ほし黄色の星
消・けし(消して)消灯
終わり・おわり / 終了・しゅうりょう消灯して音声入力を停止し、プログラムを終わる
⚡ 実行速度を「速い」にしよう
画面右上の「速度」ボタンを押して「速い」を選ぶと、LEDの反応がキビキビします。下の配布プロジェクトは、はじめから「速い」に設定してあります。
QR code for project
画面右下にマイクの表示が出ているあいだは、聞きつづけています。言ったのに光らないときは、「聞きとれなかった」か「聞きとれたけれど、どの言葉にも当てはまらなかった」のどちらか。なんと聞きとられたかは、ステップ1のプログラムでたしかめられます。
メモ:連続の音声認識には「(日本語) の音声が入力されたとき」というブロックもあり、言葉が聞きとれるたびに中が動きます。便利ですが、これを置くとプログラムは「中止」を押すまで待ちつづけます。声で終わらせたいので、ここでは「繰り返す」で調べる形にしています。
1回だけ と 連続 のちがい
1回だけ連続
聞くタイミングブロックを実行したとき開始してから停止するまでずっと
プログラムは聞きおわるまで待つ待たずに先へ進む
終わらせ方合言葉でループを抜ける合言葉でループを抜けて「音声入力を停止する」
向いているものクイズの答え、名前の入力音声コントローラー、ゲームの操作
❓ ステップ3のかくにん
「赤」と言ったあと何も言わないでいると、LEDはずっと赤のまま。それはなぜ?(ヒント:「最後に入力した言葉」は、次の言葉が聞きとれるまで変わらない)

応用 聞きまちがいに強くしよう

音声認識は100%正しくはありません。同じ「あか」でも、「赤」になったり「あか」「垢」になったりします。道具のくせを知って、プログラム側で受け止めるのが上手な使い方です。
  • 「または」で言いかえを足す:配布プログラムは漢字とひらがなの両方で受けるようにしてあります。自分で言葉を足すときも、同じように「または」でつなごう(「黄色」または「きいろ」)
  • 短くて、ほかと聞きまちがえにくい言葉をえらぶ(「き」より「きいろ」、「け」より「けして」)
  • うまくいかない言葉は、ステップ1のプログラムでどんな文字になっているかを調べる
ほかにも、こんな改造ができます。
  1. 言葉を足す:「黄色」「むらさき」「にじ」など、自分の合言葉を増やす
  2. 音をつける:圧電スピーカーをつないで、色ごとにちがう音を鳴らす
  3. あいさつロボ:「おはよう」で太陽、「おやすみ」で月の絵を出す
  4. クイズ:「1回だけ」を使って、答えを声で言わせて○×を出す

発展プログラム ― こえでうごくドット

「右」「左」「上」「下」と言うと、赤いドットがその方向へ進みつづけます「止まれ」「ストップ」で止まり、「終わり」「終了」でプログラムが終わります。
  • 進む向きを変数 dx・dy でおぼえる(右なら dx=1, dy=0。止まれなら両方 0)
  • つぎの場所 nx = x + dx、ny = y + dy を計算し、1〜8 の中におさまっているときだけ動かす(「かつ」ではしっこをチェック)
  • 「右」または「みぎ」のように、漢字とひらがなの両方で受ける
声で動かす迷路ゲームや、おえかきにも発展できます。
QR code for project

発展プログラム ― Color Words(英語)

ブロックの「日本語」を「英語」に変えると、英語の音声認識になります。red / blue / green / yellow と言うとその色に光り、off で消え、stopfinish でプログラムが終わります。英語は「Red」のように先頭が大文字で返ってくることがあるので、小文字と大文字の両方で受けています。自分の発音がAIに通じるか、ためしてみよう。
QR code for project

まとめ

  • 音声認識は、声(音)を文字に変えるAIの技術。文字になれば「もし〜なら」で使える
  • 結果は「ぴったり同じ」ではなく「含む」で判定すると、話し方がちがっても反応できる
  • 1回だけは待って聞く、連続は裏でずっと聞く。作りたいものに合わせてえらぶ
  • AIはまちがえることがある。まちがいを見こして作るのが、AIを道具として使いこなすコツです