ロボゼロを電卓代わりに使ってみる
2012年8月30日


 前回はロボゼロに2桁のかけ算をやらせて答をロボゼロに書かせました。
 今回は違った方法でロボゼロに計算をやらせます。
 前回はロボゼロが自分で問題を考えていましたが今回はリモコンで数字を入力します。
 また答えも書かせるのではなく音声で答えさせる事にします。

 ロボゼロには音声合成機能がないので予め音声ファイルは用意します。
 ロボゼロ用の音声ファイルの作成にはMiconoさんが作られたXcontrollerを使用しました。
 Windows7の音声合成は英語のものしか標準でインストールされていません。
 そこでMicrosoft の日本語音声合成エンジン(Microsoft Server Speedch Text to Speech Voice(jp-JP, Haruka))をインストールしました。
 Harukaというくらいで女性の声です。
 片やロボゼロ君というくらいで男の子なのですがそこは大目に見てください。

 音声は=+-×÷を表すです。「 わ。 たす。 ひく。 かける。 わる。」などの演算記号と  数字は各位毎に1〜9を音声にしておきます。
 数字をそのままテキストで与えると音声合成してくれます。
 また30,400,5000,60000はちゃんと「さんじゅう よんひゃく ごせん ろくまん」と読んでくれます。
 これらを組み合わせて0〜99,999,999が答えられるようになります。
 マイナスの場合は頭に「まいなす」を付けるようにします。
 各単語の間は読点(。)とスペースで区切ります。
 スペースだけだと単語の間をあまり空けずに喋りますので後で単語の開始位置を見つけにくくなります。

 今回は対応するのは2つの数の四則演算のみとします。

 また問題の数は0〜9999の4桁以内とします。
 +と-はリモコンにキーがあるのでそのまま使います。
 ×と÷はその隣の▲と▼にします。
 繰り返して違う計算ができますが、●キーでプログラムが終了します。



 四則演算はロボゼロの基本プログラミングで簡単にできますがかけ算はちょっとしたテクニックが必要となります。
 ロボゼロのレジスタ(変数)は16ビットなので扱える数値-32768〜32767で4桁通しのかけ算をやるとオーバフローしてしまいます。

 そこで答えを10000以上と10000以下に分けます。
 10000以上を出力後に「まん」の音声を出力して続けて10000以下を出力します。
 a × b の問題を a = a1 × 100 + a2, b = b1 × 100 + b2 というように100で割った答と余りに分けます。
 a1 × b1 は10000以上、a2 × b2は10000以下の答になります。
 しかしまだa1 × 100 × b2、b1 × 100 × a2 の計算が残っています。
 = (a1 × b2 + b1 × a2) × 100 となりますのでとりあえずa1 × b2 + b1 × a2を計算します。
 この答えをc3とするとc3 ÷ 100 の答がそのまま10000以上の答に足せます。
 c3 ÷ 100 の余りに×100したものを10000以下の答に足します。
 この場合、10000以下の答が10000を越える場合があるのでこの答えを10000で割って答えをそのまま10000以上の答に足します。
 余りはそのまま10000以下の答となります。

 プログラムと音声ファイルはこちらです。  なおリモコンはAモード(標準)しか対応していません。
 音声ファイル名(18SCR.TXT)は必要に応じてプログラムのSOUNDパラメータと共に変更してください。
 同包の電卓音声.csvは音声ファイルのロボゼロ用パラメータ(開始位置と長さ)のデータです。


 プログラムの実行動画です。

     

 ロボゼロのスピーカーが小さいので声が割れて聞きづらくなってしまいました。
 2回にわたってロボゼロに計算をさせてきましたが一応今回で終了です。

 なお今回のプログラムおよび音声ファイルのご使用にあたっては、ロボゼロ本体への影響を伴いますのであくまでも自己責任という事でお願いします。

目次に戻る