Google Speech API

【Lesson1】  【対象ブラウザ】Google Chrome

  テキスト情報を指定言語の発音で読み上げる『Text-To-Speech(TTS)』と、音声認識『Automated Voice Recognition』で構成したサンプル・プログラム
  テキストボックス内のマイクマークをクリックしてから、マイク入力します。喋った単語が登録された予約語なら、所定の動作を行い、
  予約語にない単語であればGoogle検索を実行するというデモです。JavaScriptで書かれていますのでブラウザの『ソースを表示』で見る事が可能です。

【内容】 予約語に無い場合には、音声認識入力したキーワードでGoogle検索を実行します。
【予約語】気象, 天気, 天気予報, 雨, 雪, 台風, 地震, ニュース, news, 政治, 経済, 事件, 動画, youtube



元の記事『【Google翻訳のText-To-Speech(TTS)[iSpeech API]の使い方】』に戻ります

【このデモのJavaScriptソース】

var NTL_command;                             //【音声入力された文字列】
var NTL_timer = setTimeout(CheckInput, 100); //【タイマー割り込み】100m秒毎に音声入力の有無をチェック

//*****************************************************
//【CheckInput】音声認識
//*****************************************************
function CheckInput() {
   clearTimeout(NTL_timer);
   Obj = document.all.google_avr;
   if ( (NTL_command != Obj.value) && (Obj.value != "") ) {
      NTL_command = Obj.value;
      document.getElementById('Result').innerHTML = "【入力された検索キーワード】:" + Obj.value +"<br>";
      var url = "http://www.google.co.jp/#&hl=ja&q=" + Obj.value; //【Google検索】
      var msg = Obj.value +'をキーワードとして検索を実行しました';
      if(Obj.value=="気象" || Obj.value=="天気" || Obj.value=="天気予報" || Obj.value=="雨" || Obj.value=="雪" ) {
         url = "http://www.jma.go.jp/jp/radnowc/"; //【気象庁レーダー・ナウキャスト(降水・雷・竜巻):全国】
         msg = "気象庁のレーダー,ナウキャストをアクセスしました";
      }
      if(Obj.value=="台風" ) {
         url = "http://www.jma.go.jp/jp/typh/"; //【気象庁地震速報】
         msg = "気象庁の台風情報のページをアクセスしました";
      }
      if(Obj.value=="地震" ) {
         url = "http://www.jma.go.jp/jp/quake/"; //【気象庁地震速報】
         msg = "気象庁の地震速報のページをアクセスしました";
      }
      if(Obj.value=="ニュース" || Obj.value=="news" || Obj.value=="政治" || Obj.value=="経済" || Obj.value=="事件" ) {
         url = "http://news.biglobe.ne.jp/topics/"; //【BIGLOBEニュース】
         msg = "ビッグローブのニューストピックのページをアクセスしました";
      }
      if(Obj.value=="動画" || Obj.value=="youtube") {
         url = "http://www.youtube.com/?gl=JP&hl=ja"; //【YouTube】
         msg = "ユーチューブをアクセスしました";
         requestOpenWindow(url);
      } else {
         requestPageOpen(url);
      }
      PlayVoice('ja', msg, 10000); //【Google Text-To-Speech】日本語でメッセージを発声,10秒後タスクを閉じる
   }
   NTL_timer = setTimeout(CheckInput, 100);
}

//*****************************************************
//【requestPageOpen】指定ワードでGoogle検索を実行する
//*****************************************************
function requestPageOpen(url) {
   var Srch = document.getElementById("Search");
   var ss = "<if" + "rame border='0' src='" + url + "' width='1024px' height='600px'></ifr" + "ame>";
   Srch.innerHTML = ss;
}

var NTL_Window;
//*******************************************************
//【新規ウィンドウを指定URLで開く】
//*******************************************************
//⇒JavaScriptを実行するのでGoogle YouTubeの動画ページでも開くことができる
function showPage(url) { 
   var newwindow = window.open(url,'NeoTechLab','height=700,width=1000,top=150,left=80,status=yes,scrollbars=yes,directories=yes,menubar=yes,resizable=yes,toolbar=yes'); 
   if (window.focus) { newwindow.focus(); } 
   return( newwindow );
}

//*******************************************************
//【Open YouTube Window】指定動画IDのページを開く
//*******************************************************
function requestOpenWindow(url) {
   NTL_Window = showPage( url );
}

//*******************************************************
//【Close YouTube Window】開いている動画ページを閉じる
//*******************************************************
function requestCloseWindow() {
   NTL_Window.close();
}

var NTL_VoiceTimer;
//*******************************************************
//【Google Text-To-Speech】
//*******************************************************
function PlayVoice( language, message, milliseconds ) { //【Language Code】'en':英語 'ja':日本語 'es':スペイン語 'fr':フランス語 'de':ドイツ語 'it':イタリア語
   var ua = navigator.userAgent; //【ブラウザのユーザーエージェントを取得】
   if (ua.match(/Chrome\/([\.\d]+)/)) { //【Google Chrome】
      var base=document.getElementById("Voice");
      var url="http://translate.google.com/translate_tts";
      base.innerHTML="<font size=\"1\">【Google翻訳の音声合成を用いたアナウンス】</font>";
      var obj=document.createElement("iframe");
      obj.setAttribute("border", "0");
      obj.setAttribute("frameborder", "0");
      obj.style.width = 300;
      obj.style.height = 20;
      obj.src=url + "?ie=utf-8&tl=" + language + "&q=" + message;
      obj.type = "audio/mpeg";
      base.appendChild(obj);
      if ( milliseconds > 0 ) {
         NTL_VoiceTimer = setTimeout('RemoveVoice()', milliseconds); //【20秒程度でVoiceオブジェクトを消去】
      }
   }
}

//*******************************************************
//【Google Text-To-Speech】【remove】
//*******************************************************
function RemoveVoice() {
   clearTimeout(NTL_VoiceTimer);
   document.getElementById("Voice").innerHTML = "";
}