この動画は、プログラミングロボット「クムクム(Qumcum)」をScratch(スクラッチ)で制御し、ユーザーが入力した「電話番号」や「部屋番号」などの数字・英数字をロボットに正しく発話させる方法を解説しています。
プログラミングロボットで「数字」と「英数字」を正しく喋らせる方法【Scratch音声合成入門】
プログラミング教育の現場で注目されている「Scratch(スクラッチ)」と、実際に動くロボットを組み合わせた音声コントロールのチュートリアル第3弾です。今回は、人間とロボットの対話において非常に重要な要素となる「数字」と「英数字」の読み上げ分けについて詳しく解説します。
ロボットに電話番号や部屋番号を喋らせたいとき、「123」を「ひゃくにじゅうさん」と読むのか、「いち・にい・さん」と読むのかは大きな違いです。この記事では、ユーザーの入力を受け取り、それを適切な形式でロボットに復唱させるインタラクティブなプログラムの作り方を、動画の手順に沿ってステップバイステップで学びます。
本記事で学べること
- Scratchの音声拡張機能(VOICEコマンド)の基礎
- 「数字でしゃべる」ブロックと「英数字でしゃべる」ブロックの違いと使い分け
- ユーザーのキーボード入力を変数(答え)として受け取り、ロボットに発話させる方法
- 実用的な「電話番号確認」や「部屋番号確認」プログラムの構築
- プログラミング時によくあるミスとそのデバッグ方法
1. 音声合成における「数字」と「英数字」の決定的な違い
人間が文字を読むとき、文脈によって数字の読み方を無意識に変えています。しかし、ロボット(コンピュータ)にはその判断が難しいため、プログラマーが明示的に指示を与える必要があります。
数字(Number)モードの特徴
通常の「数字」モードでは、連続した数字を一つの「数値」として扱うか、あるいは単純な羅列として読むか、エンジンによって挙動が異なりますが、基本的には算用数字としての処理が優先されます。例えば、計算結果の読み上げなどに適しています。
英数字(Alphanumeric)モードの特徴
一方、「英数字」モードは、IDやコード、部屋番号のように、アルファベットと数字が混在する文字列を読み上げるために設計されています。「A-101」を「エー・ハイフン・いち・まる・いち」のように、文字として一文字ずつ明確に伝える必要がある場合に適しています。
2. 実践チュートリアル:電話番号を復唱させるプログラム
動画の前半では、ユーザーに電話番号を尋ね、それをロボットが復唱するプログラムを作成しています。これは受付ロボットなどでそのまま使える実用的なロジックです。
手順1:質問ブロックの配置
まず、「調べる」カテゴリーにある「(あなたの電話番号を入力してください)と聞いて待つ」ブロックを使用します。これにより、プログラムはユーザーからのキーボード入力を待機する状態になります。
手順2:入力内容の取得と発話
ユーザーが入力した内容は、「答え」という変数(値)に一時的に保存されます。 次に、ロボットのVOICEコマンド(音声合成ブロック)を使用します。
ここで重要なのが、「(答え)を数字でしゃべる」というブロックの組み合わせです。
- ロボット:「あなたの電話番号を入力してください」
- ユーザー:「09012345678」と入力
- ロボット:「ありがとうございます。あなたの電話番号は(09012345678)ですね」と発話
動画内では、「あなたの電話番号は」という定型文と、ユーザーの入力した「答え」、そして語尾の「ですね」を組み合わせて、自然な会話フローを作っています。
3. 応用編:部屋番号(英数字)の読み上げと注意点
次に、マンションの部屋番号や会員IDなどで使われる「英数字」の読み上げに挑戦します。例えば「A102」のようなデータです。
英数字モードへの切り替え
電話番号のプログラムを複製(コピー&ペースト)して改造する場合、最も注意すべき点は発話ブロックの種類を変更することです。
動画のデモンストレーションでは、部屋番号(例:ABC-1089…)を入力させた際、最初は誤って「数字でしゃべる」ブロックを残したままにしてしまうシーンがあります。この場合、ロボットはアルファベットの部分を無視したり、数字部分だけを無理やり数値として読もうとしたりして、意図しない読み上げになってしまいます。
正しい実装
部屋番号を正しく読ませるためには、必ず「(答え)を英数字でしゃべる」ブロックを使用します。これにより、「A・B・C・ハイフン・1・0…」のように、記号やアルファベットを含めて正確に読み上げることが可能になります。
4. プログラミングにおける「デバッグ」の重要性
この動画の非常に有益な点は、「失敗例」もそのまま収録されていることです。
部屋番号のテスト中に、前のプログラムの残骸(数字でしゃべるブロック)が残っており、ロボットが「数字モード」と「英数字モード」の両方で喋ってしまうというバグが発生しました。 「123…」と読んだ後に、再度正しく読み直すという奇妙な挙動です。
これは、Scratchでブロックを組み立てる際によくあるミスです。
- 不要なブロックは確実に削除する
- プログラムの流れ(シーケンス)を上から順に目で追って確認する
こういったトラブルシューティングのプロセスこそが、プログラミング的思考を養う上で最も良い教材となります。
5. この技術の応用と今後の展望
今回学んだ「入力(Ask)」と「特定のモードでの発話(Speak)」の組み合わせは、AIロボット開発の基礎となる技術です。
受付システムへの応用
病院やイベント会場で、「受付番号を入力してください」とロボットが促し、入力された番号を読み上げて確認し、該当する窓口を案内するといったシステムが、この基礎知識だけで作れるようになります。
教育・クイズアプリへの応用
英単語のスペルクイズや、数学の計算問題など、数字と文字を明確に区別して答える必要があるアプリケーションの開発にも役立ちます。「答えは数字で言ってね」「次はアルファベットで答えてね」という誘導が可能になります。
まとめ:AI時代のロボット対話設計
ChatGPTやGeminiのような高度なAIチャットボットが普及していますが、物理的なロボットを動かす際には、今回のように「データをどのように解釈して音声化するか(TTS: Text-to-Speech)」という細かい制御が依然として重要です。
「数字」として読むのか、「記号」として読むのか。この細やかな設定ができるかどうかが、ユーザーにとって「賢いロボット」と感じられるか、「使いにくいロボット」と感じられるかの分かれ道になります。
ぜひ、お手元のScratch環境やクムクムロボットで、様々なパターンの数字・英数字を読ませてみて、最適な対話フローを探求してみてください。



コメント