スポンサーリンク

Scratchで音声認識はできる?声に反応するゲームの作り方

スポンサーリンク
ScratchでAIを学ぼう!ブロックプログラムで簡単AI
スポンサーリンク

「Scratchで『ジャンプ』と話しかけて、キャラクターを動かしたい」と考えていませんか?最初に、声の大きさを調べることと、話した言葉を認識することの違いを確認しましょう。

この記事では、Scratchの「音量」ブロックを使い、声や拍手に反応してネコがジャンプするゲームを作ります。外部APIや追加の拡張機能は使いません。

この作例は、言葉を聞き取る音声認識AIではありません。「ジャンプ」という言葉の意味ではなく、マイクに入った音の大きさに反応します。

スポンサーリンク

1. 音声認識・音量の検出・読み上げの違い

機能何をする?例
音量の検出マイクに入った音の大きさを数値にする大きな音でネコがジャンプする
音声認識話した言葉を文字などに変換する「ジャンプ」と話した内容を判定する
音声合成・読み上げ文字を音声として出力する入力した「こんにちは」を読み上げる

Scratchの「調べる」にある「音量」は、マイクの音の大きさを調べるブロックです。「音声合成」の拡張機能は文字を読み上げる機能であり、こちらが話した言葉を聞き取る機能ではありません。

言葉を認識する作品を作る場合は、それに対応した外部の学習環境やサービスを選び、接続手順を確認する必要があります。APIキーを取得するだけで、Scratchの「音量」ブロックが音声認識に変わるわけではありません。

2. 今回作るゲーム

マイクに向かって声を出すと、ネコがその場でジャンプします。

  • 静かなときは、ネコは待機します。
  • 音の大きさが設定値を超えると、ジャンプします。
  • ジャンプ後は、音が小さくなるまで待ちます。
  • もう一度声を出すと、再びジャンプします。

拍手や周囲の音にも反応します。声の主や言葉の意味を区別することはできません。

3. 必要なもの

  • マイクを利用できるパソコン
  • 内蔵マイク、または接続済みの外付けマイク
  • ブラウザ版Scratchを開くためのインターネット接続

Scratch公式サイトを開き、「作る」から編集画面に進みます。英語表示の場合は、地球のマークから日本語を選んでください。

作成を始めるだけなら、ログインは必須ではありません。アカウントを使わない場合も、ファイルメニューから作品をコンピューターに保存できます。

4. マイクの音量を表示しよう

  1. 編集画面で、ネコのスプライトを選びます。
  2. 「コード」タブを開きます。
  3. 左側の「調べる」カテゴリを選びます。
  4. 「音量」ブロックの横にあるチェック欄をオンにします。
  5. マイクの利用許可が表示された場合は、許可します。
  6. 声を出したときに、ステージ上の音量の数値が変わるか確認します。

ここで使うのは「調べる」の「音量」です。「音」カテゴリにある、再生音の音量を変更するブロックとは役割が異なります。

音量の数値は、音の大きさを表す相対的な目安です。騒音計のようなデシベル値ではありません。

5. 反応させる音量を決めよう

まずは、判定に使う数値を「30」にしてみます。ただし、マイクの種類や距離、周囲の音によって適切な値は異なります。

  1. 静かなときの音量を見ます。
  2. 普通に声を出したときの音量を見ます。
  3. 静かなときより高く、声を出したときに超える値を選びます。

例えば、静かなときが5前後、声を出すと40前後になる環境なら、30を試せます。これは説明用の例で、どのパソコンでも同じ値になるわけではありません。

反応しないときは数値を下げ、周囲の音で反応するときは上げて調整します。大声を出し続ける必要はありません。

6. ジャンプするプログラムを組もう

次のブロックを、同じネコのコード領域に組みます。

以下はブロックの配置を表した見本です。文章をScratchへ貼り付けてもブロックには変換されません。各カテゴリからブロックをドラッグして組んでください。

緑の旗が押されたとき
x座標を[0]、y座標を[-100]にする

ずっと
    〈(音量)>[30]〉まで待つ

    [10]回繰り返す
        y座標を[10]ずつ変える

    [10]回繰り返す
        y座標を[-10]ずつ変える

    〈(音量)<[20]〉まで待つ

使うブロックの場所

カテゴリ使うブロック
イベント緑の旗が押されたとき
動きx座標を〜、y座標を〜にする/y座標を〜ずつ変える
制御ずっと/〜まで待つ/〜回繰り返す
調べる音量
演算>/<

条件の組み方

  1. 「制御」の「〜まで待つ」を置きます。
  2. 六角形の条件欄に、「演算」の「>」を入れます。
  3. 「>」の左側に、「調べる」の「音量」ブロックを入れます。
  4. 右側の入力欄に「30」を入れます。

最後の待機条件は、同じ方法で「音量 < 20」にします。

ブロックを置く位置

2つの「〜まで待つ」と、2つの「10回繰り返す」は、すべて「ずっと」の内側に並べます。「y座標を10ずつ変える」は最初の「10回繰り返す」の内側、「y座標を-10ずつ変える」は次の「10回繰り返す」の内側に入れます。

7. プログラムの仕組み

最初にネコの位置を決める

緑の旗を押すと、ネコをx座標0、y座標-100へ戻します。途中で止めた後も、同じ場所からやり直せます。

音量が30を超えるまで待つ

「音量 > 30」の条件が成り立つと、次のジャンプ処理へ進みます。音量が30ちょうどの場合は、まだ待機します。

上がってから下がる

y座標を10ずつ10回増やすと、合計100上がります。その後、-10ずつ10回変えて、合計100下がります。両方の処理が終わると元の高さに戻ります。

音が小さくなるまで待つ

ジャンプ後は「音量 < 20」になるまで待ちます。声を出し続けたときに、すぐ次のジャンプが始まるのを防ぐためです。

判定値を調整する場合は、「反応する値」より「再び待機できる値」を低くしてください。例えば、反応を40に変えた場合でも、最後の条件は20のまま試せます。最後の値は、静かなときに下回る数値にすることが大切です。

8. 動作確認のチェック表

試すこと確認する動作
緑の旗を押すネコが開始位置に戻る
静かにするネコが待機する
声や拍手で音量を上げるネコが上がって下がる
音を小さくしてから、もう一度声を出す再びジャンプする
赤い停止ボタンを押すプログラムが止まる

「ジャンプ」以外の言葉や拍手でも反応することを確認すると、言葉を認識しているのではなく、音量に反応していると分かります。

9. うまく動かないとき

音量の数値が変わらない

  • マイクが接続されているか確認します。
  • マイク本体やパソコン側でミュートになっていないか確認します。
  • ブラウザとOSの両方で、マイクの利用が許可されているか確認します。
  • 複数のマイクがある場合は、使いたい入力機器が選択されているか確認します。

数値は変わるのにジャンプしない

声を出したときの数値が、設定した30を超えているか確認してください。また、「音量」を文字で入力するのではなく、水色のブロックを条件に入れているか確認しましょう。

一度ジャンプすると動かなくなる

ジャンプ後に、音量が20未満まで下がっているか確認してください。周囲の音が大きいと、最後の待機条件を満たせません。静かな場所で試すか、2つの判定値を環境に合わせて調整します。

何も話していないのにジャンプする

テレビ、音楽、周囲の会話などもマイクが拾います。周囲の音を減らすか、ジャンプを始める数値を上げてください。

動きがおかしい

同じネコに、別のプログラムが残っていないか確認します。最初は、この作例だけを組んで試しましょう。

10. 「ジャンプ」という言葉だけに反応させるには?

音量だけでは、言葉の違いを判定できません。「ジャンプ」と「ストップ」を区別するには、音声を文字に変換する仕組みや、音声の種類を分類する仕組みなどが必要です。

その場合は、選んだ外部環境の公式説明で、利用できる言語、対応ブラウザ、マイク権限、利用料金、音声データの扱いを確認してください。この記事の作例には、外部の音声認識サービスへの接続処理は含まれていません。

外部サービスの秘密のAPIキーを、公開するScratch作品や説明欄へ書き込まないでください。

11. 保存と次の学習

完成した作品は、ファイルメニューの「コンピューターに保存する」から保存できます。

音量で動かす仕組みを理解したら、次は「条件によって返事を変える」会話ゲームにも挑戦できます。

Scratchで作る対話型ゲームの作り方はこちら

まとめ

Scratchの「音量」ブロックを使うと、マイクに入った音の大きさを条件にしてキャラクターを動かせます。これは言葉を聞き取る音声認識や、生成AIによる判断とは異なる仕組みです。

まずは音量を表示し、自分の環境に合う判定値を探しましょう。その後、声に反応するジャンプゲームを作ると、入力・条件判定・動作のつながりを学べます。

参考資料

コメント

タイトルとURLをコピーしました