Chromeで日本語音声認識して、しゃべらせてみる
http://blog.goo.ne.jp/xmldtp/e/0480f55d4ad3e6df568eae8336bc4d7c
の処理部分(上記サイトの例ではalertになっている)を考える。
たぶん、5W1Hにわけて、何を、いつ、どうするかが判断できたほうが
よいだろう・・・
というので、まず、文章(これは、音声識別で取れた)を5W1Hに分解する
API(AI)を使ってみよう!
■概要
5W1Hに分解してくれるAPIは、
5W1H API
http://www.metadata.co.jp/5w1h-api-ma9
ただこれを、ブラウザからなにも考えないで
のように呼び出すと、エラーになる。F12キーで見ると、こんなかんじ
これは、
【解説付き】chromeでXMLHttpRequestをローカルのファイルで行う方法
https://qiita.com/growsic/items/a919a7e2a665557d9cf4
にあるように、クロスドメイン制約。
HTMLファイルと同じサーバーにPHPをおいて、そこから、curlで
上記APIサーバーにアクセスする。
XMLが返ってくるから、それを解析する。
うだうだ言っていないで、ソースを出すね。
■ソースコード
・入力された文字を読み込んで
・5W1H APIを(呼び出すPHPプログラムを)呼び出し
・受け取った結果のXMLを分解している
こんなかんじ。
このソースは
http://js.studio-kingdom.com/jquery/utilities/parse_xml
https://qiita.com/zakiyamaaaaa/items/bdda422db2ccbaea60d9
を参考にしている。また、5W1H APIを呼び出すプログラムは
こんなかんじ
このソースは
https://qiita.com/wanwanland/items/a5f9574fadd214d7b5c8
https://qiita.com/futosu/items/ad61eb7584dc70ccce76
を参考にしている。
APIキーは上記メタデータ株式会社の
http://www.metadata.co.jp/5w1h-api-ma9
「下記、利用登録フォームからお申し込みください。」の
下にあるURLから申し込むともらえる。
http://blog.goo.ne.jp/xmldtp/e/0480f55d4ad3e6df568eae8336bc4d7c
の処理部分(上記サイトの例ではalertになっている)を考える。
たぶん、5W1Hにわけて、何を、いつ、どうするかが判断できたほうが
よいだろう・・・
というので、まず、文章(これは、音声識別で取れた)を5W1Hに分解する
API(AI)を使ってみよう!
■概要
5W1Hに分解してくれるAPIは、
5W1H API
http://www.metadata.co.jp/5w1h-api-ma9
ただこれを、ブラウザからなにも考えないで
$.ajax({ url:'http://ap.mextractr.net/ma9/mext5w1h', type:'GET', datatype:"text", data:{ 'apikey':'メタデータさんから受け取ったAPIキー', 'out':'atom', 'text':encodeURIComponent(buf) } }) : (以下省略) :
のように呼び出すと、エラーになる。F12キーで見ると、こんなかんじ
これは、
【解説付き】chromeでXMLHttpRequestをローカルのファイルで行う方法
https://qiita.com/growsic/items/a919a7e2a665557d9cf4
にあるように、クロスドメイン制約。
HTMLファイルと同じサーバーにPHPをおいて、そこから、curlで
上記APIサーバーにアクセスする。
XMLが返ってくるから、それを解析する。
うだうだ言っていないで、ソースを出すね。
■ソースコード
・入力された文字を読み込んで
・5W1H APIを(呼び出すPHPプログラムを)呼び出し
・受け取った結果のXMLを分解している
こんなかんじ。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <title>Web Speech API</title> <script> function check() { var buf = $("#mytext").val(); $.ajax({ url:'5w1h.php', type:'GET', datatype:"text", data:{ 'text':encodeURIComponent(buf) } }) .done(function(data){ xml = $.parseXML(data); who = ""; $(xml).find( "gd\\:who" ).each(function(index , elm){ who = who + " " + $(elm).attr("valueString"); }); when = ""; $(xml).find( "gd\\:when" ).each(function(index , elm){ when = when + " " + $(elm).attr("valueString"); }); where = ""; $(xml).find( "gd\\:where" ).each(function(index , elm){ where = where + " " + $(elm).attr("valueString"); }); buf = "いつ:"+ when + " どこ:" + where + " 誰:" + who + "\n"+data; $("#mytext").val(buf); }) .fail(function(){ alert("error"); }); } $(function() { $("#mytext").val(""); }); </script> </head> <body> 言葉<BR/> <textarea id="mytext" style="width:400px;height:100px;border:#A6523F solid 3px;"> </textarea> <br/> <input type="button" onClick="check();" value="開始" /> <BR/> </body> </html> |
このソースは
http://js.studio-kingdom.com/jquery/utilities/parse_xml
https://qiita.com/zakiyamaaaaa/items/bdda422db2ccbaea60d9
を参考にしている。また、5W1H APIを呼び出すプログラムは
こんなかんじ
<?php $url = "http://ap.mextractr.net/ma9/mext5w1h"; $url = $url . "?apikey=メタデータさんから受け取ったAPIキー"; $url = $url . "&out=atom"; $url = $url . "&text=" .$_REQUEST["text"]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); echo $html; curl_close($ch); ?> |
このソースは
https://qiita.com/wanwanland/items/a5f9574fadd214d7b5c8
https://qiita.com/futosu/items/ad61eb7584dc70ccce76
を参考にしている。
APIキーは上記メタデータ株式会社の
http://www.metadata.co.jp/5w1h-api-ma9
「下記、利用登録フォームからお申し込みください。」の
下にあるURLから申し込むともらえる。