Edited at

たった20行のJSだけでブラウザと会話できるようになった

More than 3 years have passed since last update.

※ JavaScript for Robotics or Hardware Advent Calendar 2015 12/4用 

http://qiita.com/advent-calendar/2015/jsrobotics

さて、前回までで、言葉を発する、言葉を認識するを紛らわしい似た文章で説明してみました。

JavaScriptだけで言葉をしゃべらせてみた

Javascriptだけで言葉を認識させてみた

今回はこれらを組み合わせて、ロボット(ブラウザ)と会話をさせてみましょう。

それもたった20行だけで、何もインストールせず、ブラウザ(Chromeでしか動きませんが…)だけで、です。


speech.js

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しか動作しません

日付を教えてくれるだけの機能ですが、ブラウザに心が宿ったような気分を味わえると思います。

これに画面に顔、手などの身振りがつくと、もう愛着しかわかなくなります。

このように、ブラウザだけで簡易ではありますが、簡単にコミュニケーションロボットのベースになるところを学ぶ事ができます。

ここまで作ると、もはやこれはロボットのプラットフォームでしかありません。

そうブラウザなら。