Posted at

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

More than 3 years have passed since last update.

※ 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等のハードウェアも連携できますので、反応を動作で表す事もできます。

そう、ブラウザなら。