前回に引き続き、obnizを使ってLEDテープを光らせようと思います。
現在我が家では、子供が九九を覚えられない課題を抱えています。
それに絡めたプロダクトを考えます。
九九の正解1つにつき1つLED点灯
Webアプリで九九を出題します。
正解を入力するたびに、1つずつLEDが光るゲームです。
最終的に得点(正解数 ÷ 81 × 100の切り捨て)が出て、得点に応じて起こるイベントが変わります。
【100点】
イルミネーション(LEDランダム点灯)+クリスマスソングが流れる
【99~90点】
拍手と歓声が聞こえる
【89~80点】
「ははははは」笑い声が聞こえる(ちょっとさげすんだ感じ)
【79点以下】
「なんでやねん」
・・・子供はわざと悪い点を取って、「なんでやねん」を聞き、面白がっています。
クリスマス当日までに、はたして100点を取れるのか?
合成音声出力と音声入力対応だが
このWebアプリは出題の際、「さざんが」「ろくご」といった、合成音声でしゃべってくれます。
Sound of Textというサイトで合成音声を作ったのですが、「using the text to speech engine from Google Translate.」・・・Googleの合成音声のようです。
ライセンスが分からず、個人で楽しむ程度にします。
また、九九の答えの入力では、音声入力に対応しており、対話のように解答していけます。
これもGoogleさんの用意してくれた音声認識 (Asynchronous Speech Recognition)APIを使っています。
以下、音声認識のコードだけ抜粋します。
var rec = new webkitSpeechRecognition(); rec.continuous = true; rec.interimResults = true; rec.lang = 'ja-JP'; rec.onresult = function(e){ for(var i = e.resultIndex; i < e.results.length; ++i){ if (e.results[i].isFinal) { var val = e.results[i][0].transcript; if(val === "し"){ val = 4; }else if(val === "く"){ val = 9; } if(isNaN(val)){ $rec.text(val + " ?"); }else{ $rec.text(""); $answer.val(val); $form.submit(); } } } };
ににんが「し」、さざんが「く」は、数字として認識しないので、「し」⇒4、「く」⇒9に変換しています。
音声認識により、対話している感じが面白いのですが、最終的にこの機能は消しました。
「ろくご・・・」と問題をつぶやいてしまうと、6×5=[65]とご入力されてしまいます。
結局テンキー入力を採用しました。
間違いはどこだ?
このWebアプリは、ローカルサーバーで起動しており、採点結果のデータが指定フォルダに保存されます。
採点データは再テストで利用しやすいよう、JSON形式(ただの配列ですが)で出力しています。
出力結果を見ると・・・
1 |
["3×7","21","24","×"] |
3×7=21を24と答えてます。他にも、
1 |
["9×3","27","24","×"] |
9×3=27が24になってます。
「いち」と「しち」が「し」になってしまう傾向が見られました。
イルミネーションを見ながらクリスマスを過ごせるのか?
クリスマスまでに100点を取り、クリスマスソングを聞きながら、イルミネーションを見ることができるのか?
子供の成長に期待。