※ JavaScript for Robotics or Hardware Advent Calendar 2015 12/4用
http://qiita.com/advent-calendar/2015/jsrobotics
さて、前回までで、言葉を発する、言葉を認識するを紛らわしい似た文章で説明してみました。
JavaScriptだけで言葉をしゃべらせてみた
Javascriptだけで言葉を認識させてみた
今回はこれらを組み合わせて、ロボット(ブラウザ)と会話をさせてみましょう。
それもたった20行だけで、何もインストールせず、ブラウザ(Chromeでしか動きませんが…)だけで、です。
window.SpeechRecognition = window.SpeechRecognition || webkitSpeechRecognition;
var recognition = new webkitSpeechRecognition();
recognition.lang = 'ja';
recognition.addEventListener('result', function(event){
var speach = "クリスマスまでの日付しか答えれません。";
var text = event.results.item(0).item(0).transcript;
if(text.indexOf('クリスマス')>=0 && text.indexOf('何日')>=0){
var now = new Date();
var xmas = new Date(2015, 11, 25);
var diff = Math.ceil( (xmas.getTime() - now.getTime() ) / 86400000 );
if(diff>0) speach="あと"+diff+"日です!";
else if(diff==0) speach="今日です!";
else speach="悲しいですが、もう終わりました。";
}
var ssu = new SpeechSynthesisUtterance();
ssu.text = speach;
ssu.lang = 'ja-JP';
speechSynthesis.speak(ssu);
}, false);
recognition.start();
このコードを実行して「クリスマスまで何日?」と話しかけてみましょう。
言葉のゆれ対策で「クリスマス」と「何日」が含まれてたら実行するようにしています。
これで、「そういえばクリスマスまであと何日だっけ?」などの会話にも対応が可能になっています。
実際に動作してるのはこちら。
http://jsdo.it/wakasamasao/dayxmas
※Chromeしか動作しません
日付を教えてくれるだけの機能ですが、ブラウザに心が宿ったような気分を味わえると思います。
これに画面に顔、手などの身振りがつくと、もう愛着しかわかなくなります。
このように、ブラウザだけで簡易ではありますが、簡単にコミュニケーションロボットのベースになるところを学ぶ事ができます。
ここまで作ると、もはやこれはロボットのプラットフォームでしかありません。
そうブラウザなら。