【このデモの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 = "";
}
|