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
18
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

※ JavaScript for Robotics or Hardware Advent Calendar 2015 12/3用 
http://qiita.com/advent-calendar/2015/jsrobotics

ロボットなどでコミュニケーションを取る場合には、人間との会話が必要になることが多いです。
前回は言葉を発する部分を説明しましたが、今回は声を認識させてみます。
JavaScriptだけで言葉をしゃべらせてみた
通常ですと、声の認識は難しく専用のライブラリや、専用のシステムに認識をかけるためにいろいろ組み込む必要があります。
ですが、実はこの合成音声のためのものがW3Cで仕様が策定されています。
Web Speech API Specification
ということは・・・ブラウザで実装されています。
なので、もちろんJavaScriptのみで利用可能です!
現段階ではブラウザのChromeなどが対応しています。
http://caniuse.com/#search=speech-recognition

ということは・・Androidだとほぼ対応してるという事です。

使い方は簡単!以下のコードだけでOK

speech.js
window.SpeechRecognition = window.SpeechRecognition || webkitSpeechRecognition;
var recognition = new webkitSpeechRecognition();
recognition.lang = 'ja';
recognition.addEventListener('result', function(event){
    var text = event.results.item(0).item(0).transcript;
    alert(text);
}, false);
recognition.start();

※実行すると右上などにマイクへのアクセス許可が出ますので許可してください。

実際に動作してるのはこちら。
http://jsdo.it/wakasamasao/webspeachapi2

このように簡単にブラウザを経由することで音声認識をすることができます。
ですが、単に文章で帰ってきてしまうため、言葉のゆれや応答をどう返すか?が次の段階で必要になります。
私はブラウザで動くリアルロボットを作った時には単語で命令するようなものを作りました。
もっとちゃんとやると人工知能などの分野になり、昨今の機械学習などのものとの組み合わせになってきます。実際AzureやWatsonなどが話題になっていますが、このあたりを利用してJSONで返すなどの実装が必要かとは思います。
このあたりはネットワークに強いブラウザならではですね。

Web MIDI APIを使えばブラウザ単体でArduino等のハードウェアも連携できますので、反応を動作で表す事もできます。

そう、ブラウザなら。

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
18
Help us understand the problem. What are the problem?