LoginSignup
27
27

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-12-03

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

日付を教えてくれるだけの機能ですが、ブラウザに心が宿ったような気分を味わえると思います。
これに画面に顔、手などの身振りがつくと、もう愛着しかわかなくなります。

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

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

そうブラウザなら。

27
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
27