Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
27
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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

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

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

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

そうブラウザなら。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
27
Help us understand the problem. What are the problem?