どれ使う?プログラミング教育ツール

Google製「Teachable Machine」の機械学習で簡単に音声認識データを作る ~TensorFlowの技術を「Scratch」で活用

 2020年度からついに小学校でプログラミング教育が実施されます。これに伴い家庭でも手軽にプログラミングを学習できるツールが多数登場していますが、どんなツールを使えばいいのか迷ってしまう方も多いのではないでしょうか? そこで本連載では家庭でのプログラミング教育にピッタリなお勧めツールを紹介していきたいと思います。

 Googleの「TensorFLow」というオープンソース機械学習プラットフォームを手軽に使えるツールを以前の記事で紹介しました(前編後編)が、同様のツールが他にもあるので、今回は別の方法を紹介します。今回はGoogle自身が提供している「Teachable Machine」で機械学習を行なってモデルのデータを作り、そのモデルデータを利用できる特別な「Scratch」で参照してプログラムを組みます。今回は「Teachable Machine」で音声認識ためのモデルデータを作るところまでを行い、次回、「Scratch」で音声認識を利用した作品を作ります。

Teachable Machineを開いて学習データを作ろう

 早速、「Teachable Machine」を使ってみましょう。次の図の通り、トップページから[使ってみる]-[音声プロジェクト]を作成します。Webブラウザーは「Google Chrome」か「Firefox」を使用し、マイクの使用許可を求められたら許可してください。

「Teachable Machine」のトップページにある[使ってみる]ボタンから入る
[音声プロジェクト]を選択

バックグラウンドノイズと学習させたい音声データのサンプルを作成

 ツールが開いたら、まず一番上のバックグラウンドノイズの登録をします。何もしていない状態の音をひとつのパターンとして学習させておくのです。次の図の通り、雑音だけを20秒録音して各1秒20個の音声サンプルを作ります。

学習データ作成ツール。バックグラウンドノイズの[マイク]ボタンを押す
❶[20秒間録画する]ボタンを押すと録音が始まる。録音が終わったら、❷[サンプルを抽出]ボタンを押すと、自動的に20個の音声サンプルに分割される。

 続いて、学習させたいパターンの登録をします。次回、「Scratch」で作る作品に使いたいのは、“パイナップル”と“りんご”のどちらを発声したかを判定する音声認識モデルです。“パイナップル”という発声と、“りんご”という発声をそれぞれひとつのパターンとして学習させませす。

 まず、次の図の通りの手順で、“パイナップル”の学習サンプルから作りましょう。録音するごとに“パイナップル”と発声して、“パイナップル”音声のサンプルを作成します。

 このツールは1秒間の音声サンプルをたくさん学習させる仕組みです。1つのパターンにつき8個以上のサンプルが必要ですが、サンプルは多い方がいろいろな“パイナップル”を認識する学習データになります。

❶“Class 2”というタイトルを“パイナップル”に書き換え、❷[2秒間録画する]を押して“パイナップル”と発声する。2秒の録音が終わったら❸[サンプルを抽出]ボタンを押す

 録音は1度に2秒間行われますが、自動的に1秒ずつ2個のサンプルに分割されます。今回は、特定の単語の発声を認識させるのが目的なので、発声の含まれないサンプルや、“パイナッ”や“プル”など一部だけしか入っていないサンプルは削除しておきましょう。これを行わないと認識の精度が下がります。

ひとつずつ確認をして、不要なサンプルは削除。全体数が減りすぎたと感じたら追加で録音して補充する

 同様に、“りんご”の学習サンプルも作成します。“バックグラウンドノイズ”、“パイナップル”、“りんご”の3個のパターンの学習用サンプルがそろったら、[モデルをトレーニングする]を押して機械学習させます。

[モデルをトレーニングする]ボタンを押すと機械学習がスタートする

学習モデルのテストとエクスポート

 機械学習が終わってモデルができると、次の図のように学習させたパターンの名前とゲージが表示されます。この状態で、音声認識のテストができるので、“パイナップル”と“りんご”を適当に発声して認識率をチェックしてみましょう。思うような結果が得られない時は、音声サンプルをチェックしたりサンプルを撮り足したりすると、結果が変わる可能性が高いので、何度も試してみましょう。目安として、“パイナップル”と“りんご”を発声したときにそれぞれ90%以上の確度で認識されるくらいにしておくと、使いやすいモデルになります。テストを繰り返してOKだと思ったら、このモデルを利用するために、エクスポートします。

❶実際に発声をして認識具合をテストできる。“パイナップル”が93%の確度で認識されているところ。❷認識状態が満足できたら[モデルをエクスポートする]を押す

 [モデルをエクスポートする]ボタンを押すと、次の図の画面が表示されます。“アップロード”が選択されていることを確認して[モデルをアップロード]を押すと、”共有可能なリンク”が生成されます。このURLを次回「Scratch」で参照するので、コピーしておきましょう。このモデルのデータはクラウド上にあるので、別のPCからでも、他人でも、URLを知っていれば使うことができます。不安に思うかもしれませんが、モデルのデータにはサンプルの音声が含まれているわけではないので、学習させた音声がクラウド上でアクセス可能になる心配はありません。

“アップロード”が選択されていることを確認して[モデルをアップロード]を押す

 なお、音声サンプルを含む学習データを作成するこの設定を保存したい場合はメニューから[プロジェクトをファイルとしてダウンロード]を選んで保存しておくことができます。「Scratch」で作品を作っている途中でモデルを修正したくなる可能性もあるので、念の為プロジェクトをダウンロードしておくと安心です。

❶メニューから❷[プロジェクトをファイルとしてダウンロード]で、学習データを作るプロジェクト全体を保存できる。再び使いたい時は❸[ファイルからプロジェクトを開く]から保存したプロジェクトファイルを選ぶ

 今回はここまでです。今回使用したGoogleの「Teachable Machine」は、機械学習のモデルを誰もが簡単に作れるツールで、作ったモデルのデータは“TensorFlow.js”という機械学習用のJavaScriptライブラリのモデルなので、JavaScriptなどで使用することができるということです。

 次回は、このモデルデータを使えるように特別にアレンジされた専用の「Scratch」を使って“パイナップル”と“りんご”の発声を使った作品を作ります。お楽しみに。

 なお、子どもでも気軽に使える「TensorFlow」の機械学習のツールのいずれかと専用の「Scratch」のいずれかを使用した小中学生向けのプログラミングコンテスト“キッズ AI プログラミングコンテスト 2020”をGoogleが開催しています。応募締め切りは8月31日までで、まだ間に合うのでぜひチャレンジしてみてはいかがでしょうか。

“キッズ AI プログラミングコンテスト 2020”のページ