2024年12月26日
015-1.EV3で楽しむスクラッチ3.0-第6回「しゃべるロボットを作る」
ここでは「スクラッチ(Scratch)」を使ってレゴ マインドストームEV3のプログラミングを行う方法を紹介します。スクラッチとはMITメディアラボという研究施設のライフロングキンダーガーテングループによって開発されているプログラムのツールです。スクラッチの特徴としては、教育向けに作られていて親しみやすいこと、無償で使えること、Webブラウザでも動作すること、直観的にプログラムが作れることなどがあります。(文/松原拓也)
◆ 「音声合成」を使う

今回はスクラッチの拡張機能を使って、しゃべるロボットのプログラムを作ってみたいと思います。
音声合成を使うには、スクラッチのエディタ画面の左下にある「拡張機能を追加」ボタンを押します。
ボタンを押すと、このような画面が表示されます。 そして、「音声合成」を選択します。 これは音声を合成して発することができる機能です。

音声合成のブロックです。「~としゃべる」「声を~にする」「言語を~にする」の3種類です。

音声を再生するには「~としゃべる」ブロックにしゃべらせたい内容を入力します。ここでは「こんにちは」と入力しました。
プログラムを実行すると、「こんにちは」という音声がパソコンのスピーカーから鳴ります。インテリジェントブロックのスピーカーからは鳴りません。

続いて、カラーセンサー(周辺光の強さモード)の値を音声で出力させてみます。
このようにカラーセンサーをインテリジェントブロックに接続します。

カラーセンサーの値をしゃべるプログラムです。
カラーセンサー(周辺光の強さモード)の値は「明るさ」ブロックで取得します。「言語を~にする」ブロックは「Japanese」にします。
変数「talk」にしゃべらせたい言葉を格納しています。 しゃべっている内容を画面で確認できるように、「~と言う」ブロックを使って画面にも表示します。

プログラムの実行結果です。
たとえば、測定した値が「55」の場合、「ごじゅうご」としゃべります。
この技術を使えば、画面を見なくてもセンサーの値を確認することができます。

「言語を~にする」ブロックの設定を変更することによって、いろいろな言語でしゃべらせることができます。
英語で読み上げたい場合には「English」に設定します。 たとえば、測定した値が「55」の場合、「Fifty Five(フィフティ・ファイブ)」としゃべります。
◆ 翻訳機能で英語をしゃべらせる

合成音声機能は数字以外でも英語でしゃべらせることができます。ただし、しゃべらせたい言葉を英語で入力する必要があります。
そこで「翻訳」という拡張機能を使って、日本語を英語に翻訳して、英語をしゃべらせてみたいと思います。これなら、英語を知らない人でも英語をしゃべらせることができるようになります。

「翻訳」の拡張機能を選択すると、このようなブロックが使えるようになります。

翻訳機能の使用例です。「~を~に翻訳する」ブロックを使って翻訳を行います。 ここでは「こんにちは」を英語に翻訳してみました。 翻訳した結果を画面で確認できるように変数「talk」に格納しています。

実行すると「Hello(ハロー)」としゃべります。「こんにちは」が「Hello」に翻訳されたわけです。

なお、英語をしゃべらせる場合には必ず「言語を~にする」ブロックを置きましょう。このブロックがないと、不自然な発音になってしまいます。「English」に設定することで、自然な発音になります。

この翻訳の機能は単語だけではなく、文章にも対応しています。
例として「スクラッチを使ってロボットを動かすことができます」と入力してみます。

プログラムを実行すると、こうなります。
「You can use scratch to move the robot」と翻訳されて英語でしゃべりました。元の文章には「You(あなた)」に相当する記述はなかったのですが、その足りない部分が付け足されています。Googleの技術を使われているだけあって、翻訳の能力は優秀です。
この技術を使えば、英語でしゃべるロボットを作ることができると思います。
今回作成したプログラム(スクラッチ3.0用)
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。