スクラッチでロボットに数字を「桁読み」させる方法【音声合成チュートリアル】
プログラミング教育ツールとして世界中で親しまれている「Scratch(スクラッチ)」。キャラクターを動かすだけでなく、音声合成機能を使って喋らせることができるのをご存知でしょうか?
特に日本語の数字には「万」「億」「兆」といった独特の単位(位取り)があり、これをロボットやキャラクターに自然に読ませるのは意外と難しいものです。しかし、専用の「桁読み」コマンドを使えば、誰でも簡単に高度な数値読み上げプログラムを作ることができます。
この記事では、プログラミングロボット「クムクム」のチュートリアル動画を参考に、スクラッチで数値を自然な日本語で桁読みさせる方法、乱数を使った計算ゲームへの応用などを詳しく解説します。
この動画と記事で学べること(概要)
この記事を読むことで、以下のスキルを習得できます。
数値の桁読み機能の基礎: 数字を棒読み(イチ、ニ、サン…)ではなく、位取りをして(ヒャクニジュウサン…)読ませる方法。
乱数の活用: プログラムを実行するたびに異なる数字を喋らせるテクニック。
変数の利用と計算: 変数に格納した数値を計算し、その結果を読み上げる応用。
文章の合成: 「A かける B は C です」のように、数式と答えを組み合わせて流暢に喋らせるプログラミング。
これらの技術は、算数の学習アプリや、お買い物ゲーム、クイズの司会者ロボットなどを作る際に非常に役立ちます。
詳細手順1:基本的な「桁読み」ブロックの使い方
まずは基本となる「桁読み」機能からスタートしましょう。通常、スクラッチの拡張機能や標準的な読み上げでは、数字の羅列を電話番号のように読んでしまうことがありますが、このチュートリアルで使用している環境(クムクムのブロック)には、専用のブロックが用意されています。
コマンドの選択: 音声(VOICE)カテゴリーにある「桁読みで [ 123 ] と喋る」というブロックを使用します。
数値の入力: 読み上げさせたい数字を直接入力します。
例:「123456789」と入力。
実行結果: ロボットは「イチ、ニ、サン…」ではなく、「1億 2345万 6789」と、日本の単位に合わせて抑揚をつけて読み上げます。
ポイント: この機能は最大16桁までの数字に対応しています。これにより、日常生活で使う金額や個数だけでなく、国家予算や天文学的な数字まで読み上げさせることが可能です。
詳細手順2:乱数を使ってランダムな数字を喋らせる
毎回同じ数字を喋るだけでは面白くありません。そこで、「演算」カテゴリーにある「乱数」ブロックを使って、毎回違う数字を喋らせてみましょう。
乱数ブロックの準備: 「[ 1 ] から [ 10 ] までの乱数」ブロックを用意します。
桁読みブロックへの組み込み: 先ほどの「桁読みで [ ] と喋る」の [ ] の部分に、この乱数ブロックをはめ込みます。
繰り返しの設定: 「制御」カテゴリーの「ずっと」ブロックで全体を囲みます。
実行: プログラムを実行すると、ロボットが次々と異なる数字を読み上げ始めます。
応用実験: 乱数の範囲を広げてみましょう。「1」から「10」ではなく、「1」から「1000000000000(1兆)」のように大きな数字を入力してみてください。 ロボットは「7772億 194万…」のように、巨大な数字でも即座に正しい日本語の単位で読み上げてくれます。これは人間がパッと見て読むよりも遥かに高速で正確です。
詳細手順3:計算結果を読み上げる(変数と演算の応用)
次に、2つの数字をランダムに作り、その掛け算の結果を計算して読み上げるプログラムに挑戦します。これには「変数」の知識が必要になります。
手順のステップ
変数の作成:
「変数」カテゴリーから「変数をその場で作る」を選択し、新しい変数名を付けます(例:「変数1」「数字2」など)。
乱数の代入:
「[変数1] を [ 100 ] から [ 1000 ] までの乱数にする」ブロックを作ります。
同様に、「[数字2]」にも乱数をセットするブロックを作ります。
計算と発話:
「桁読みで [ ] と喋る」ブロックを用意します。
この [ ] の中に、「演算」カテゴリーの「[ ] * [ ](掛け算)」ブロックを入れます。
掛け算の左右の空欄に、「変数1」と「数字2」の変数をそれぞれセットします。
これにより、プログラムは「変数1 × 数字2」を内部で計算し、その答えだけを「〇〇万〇〇」と読み上げるようになります。
詳細手順4:数式全体を文章として喋らせる
答えだけを唐突に言われても、何と何の計算だったのか分かりにくい場合があります。そこで、動画の後半では「500 かける 300 は 150000 です」というように、数式全体を丁寧に説明させるプログラムを作成しています。
これを実現するには、プログラムを順次実行(上から順に実行)させるロジックを組みます。
プログラム構成例
以下のようにブロックを縦に並べていきます。
変数のセット: 「変数1」と「数字2」に乱数をセットする。
1つ目の数字: 「桁読みで [ 変数1 ] と喋る」
つなぎの言葉: 「[ かける ] と喋る」(通常の喋るコマンドを使用)
2つ目の数字: 「桁読みで [ 数字2 ] と喋る」
つなぎの言葉: 「[ は ] と喋る」
答えの計算と読み上げ: 「桁読みで [ 変数1 * 数字2 ] と喋る」
締めくくり: 「[ です ] と喋る」
待機: 「[ 1 ] 秒待つ」(次の問題に行く前のインターバル)
重要なテクニック: 連続して喋らせると言葉が重なってしまったり、早すぎて聞き取れないことがあります。適宜「〇秒待つ」ブロックを入れたり、音声コマンドの完了を待つタイプのブロックを使用したりして、リズムを調整しましょう。
動画内では、実際に「5923 かける 9772 は 5787万9556 です」といった複雑な計算を、ロボットが流暢にこなす様子が確認できます。
注意点とトラブルシューティング
プログラムを作成する際に、初心者が陥りやすいポイントをまとめました。
桁数の限界: 前述の通り、この桁読み機能の上限は16桁です。掛け算の結果がこれを大きく超えると、正しく読み上げられない、またはエラーになる可能性があります。乱数の範囲を決める際は、計算結果が16桁(およそ1000兆の桁)を超えないように注意しましょう。
演算ブロックの重なり: スクラッチでは、ブロックの中にブロックを入れる(ネストする)操作が頻繁に発生します。「桁読み」の中に「掛け算」を入れ、その中に「変数」を入れるという操作は、マウスのドラッグ&ドロップで慎重に行う必要があります。白い枠が表示されたタイミングで離すのがコツです。
デバッグ(確認)の重要性: 音声だけで聞いていると、本当に計算が合っているか不安になります。動画のように、画面上のステージに変数を表示(チェックボックスをオン)させておき、目視で数字を確認しながら動作テストを行うことを強く推奨します。
応用への道:算数ドリルや読み上げゲームを作ろう
この「数値の桁読み機能」をマスターすれば、以下のようなアプリケーションへの応用が可能です。
無限算数ドリル:
ロボットが問題を出し、ユーザーが答えるまで待つプログラム。
正解なら「ピンポン!」、不正解なら「ブブー」と鳴らす機能を追加。
お買い物ごっこレジスター:
商品のバーコード(に見立てたセンサー入力など)を読み取ると、「198円です」「合計で2500円です」と喋るレジスターアプリ。
大喜利・クイズの点数発表:
「今回の得点は… 1億ポイントです!」のように、バラエティ番組のような演出を行うロボット。
特に教育現場においては、子供たちが自分で「九九の練習マシーン」を作る授業などで、この桁読み機能は非常に強力なツールとなります。単なる数字の表示だけでなく「音で聞く」ことは、学習効果を高める上でも有効です。
まとめ
今回のチュートリアルでは、スクラッチとロボットを使って、日本独特の「数値の桁読み」を実現する方法を学びました。
「桁読み」ブロックを使えば、16桁までの数字を自然な日本語で発話できる。
乱数と組み合わせることで、予測不能な数字を次々と生成できる。
変数と演算を使えば、複雑な計算結果も瞬時に読み上げ可能。
順次処理を組み合わせることで、数式を含め文章として喋らせることができる。
AIやロボットが身近になる現代において、人間にとって分かりやすい言葉(自然言語)でデータを伝える技術は非常に重要です。ぜひこの機能を活用して、耳で聞いて分かりやすい、親切なプログラミング作品を作ってみてください。



コメント