はじめに
ちょっと前なのですがScratchとTeachable Machineでプログラムを作りました。
私(母)アイデアで作り始めたのですが、Scratchといえば息子くん昔はまって得意なのもあり時々PCを奪われて「お母さんが作りたいのに―!」とか揉めながら、一緒に作りました。
そういえば去年末はじめてTeachable Machineつかって作ってみたのをTwitterで投稿してなかった~と思って投稿。Teachable Machineすごいす! pic.twitter.com/J617jQWlBV
— しろいとり子 (@siroitori0413) 2021年2月24日
ハンドサインで音楽を奏でたい
私、地元おかあさんコーラスの合唱団に属しています。
腕のある先生のご指導のもと練習を重ねていて全国大会にも出場するようなわりとツヨイ団です。(ただコロナ禍により現在活動休止中)
そのありがたいご指導の中で「音階のハンドサインによる発声練習」があります。
ドレミファソラシドの音階をハンドサイン(手話)しながら歌ったり、先生のハンドサインを見てパートごとに違う音をとったりします。かなりの脳トレ・・・!
私はずっと思っていました。このハンドサインを画像認識して音が鳴らせそうだな~と。
そんなときに去年「ScratchとTeachable MachineでAI」というのが流行っているのを見て、これでやってみようと思いました。
製作
Teachable Machineで画像を学習させる
Googleが提供するブラウザ上で動かせるツールです。詳しい情報はググればたくさん出てくるのでそちらをご参照ください。
先日公開したブログのルンバのハック(AIカー化)の時もこのTeachable Machineを使いました。
PCのインカメラでドレミファソラシドのハンドサインの画像を連写して画像を取得します。
そのあと、「トレーニング」して「プレビュー」で確かめることができます。
試しにカメラに向かってドのハンドサインをしてみると、ドである可能性が100%と認識されていることが確認できました。( ↓ 画面右下)
作成したAIモデルをScratchで使えるように、エクスポートします。このときTensorFlow.jsの「アップロード(共有可能なリンク)」でモデルをアップロードするようにして、共有リンクを作成します。
Scratch
AIモデルをScratchで利用するには、拡張版のScratch(https://stretch3.github.io/)を使用したうえで、下記の「TM2Scratch」の拡張機能を追加する必要があります。
また今回はハンドサインに応じてピアノの音を出してみようと思い「音楽」というのも追加してみました。
これらの拡張機能を追加すると、左下のほうに新しく「TM2Scratch」「音楽」のメニューアイコンが追加され、ここから拡張機能用ブロックを出すことが出来ます。それを使って作ったプログラムがコチラ ↓
プログラム説明
- 画像分類モデルURLのブロックに先ほど作成したAIモデルの共有リンクを入力します。
- 確度のしきい値を0.6に設定してみました。
- プログラム見切れていますが、「ド」を受け取ったときのブロックプログラムを以降レミファソラシド(ここのドは上のド)についても同様に作成しました。
- current=1かどうかの分岐の意味は、ドが認識されたらドのポーズの間中ドドドドド・・と音が連呼されるのを防ぐためです。また逆に連続して同じ音を出したいときはいったん何もない音(「無し」)の判定をさせることにして、連続した同じ音を鳴らせるようにしました。(※1)
できあがり
せっかくなので曲を演奏してみました。何の曲でしょう?
正解は・・・
「アマリリス」でした~。
認識して音が出るまでのラグがあるのと、同じ音を連続して出すときに一度「なし」判定をさせないといけないのとで(前述の※1)、リズムがぐちゃぐちゃになっちゃってちょっと何の曲かわからないかもですがー(;'∀')
Teachable Machine と Scratch で、とても簡単にAI体験ができるのでおススメです。今度は音声認識のAIも試してみたいなと思います。