Esempio n. 1
0
grammar.compile(function(err, result) {
	if (err) throw err;

	// Julius インスタンスの生成
    var julius = new Julius( grammar.getJconf() );

	julius.on('result', function(str) {
		if (str) console.log(str.slice(0).toString());
		switch (str) {
			case 'ドローンテイクオフ' :
        client.stop();
        client.takeoff();
        voice.talk('離陸します');
        break;
			case 'ドローンランディング' :
        client.stop();
        client.land();
        voice.talk('着陸します');
        break;
			case 'ドローンアヘッド' :
        client.stop();
        client.front(0.1);
        voice.talk('前進します');
        break;
			case 'ドローンバック' :
        client.stop();
        client.back(0.1);
        voice.talk('後進します');
        break;
      case 'ドローンライト' :
        client.stop();
        client.right(0.1);
        voice.talk('右へ移動します');
        break;
      case 'ドローンレフト' :
        client.stop();
        client.left(0.1);
        voice.talk('左へ移動します');
        break;
      case 'ドローンアップ' :
        client.stop();
        client.up(1);
        client
          .after(1000, function() {
            this.stop();
          });
        voice.talk('上昇します');
        break;
      case 'ドローンダウン' :
        client.stop();
        client.down(1);
        client
          .after(1000, function() {
            this.stop();
          });
        voice.talk('下降します');
        break;
			case 'ドローンターン' :
        client.stop();
        client.clockwise(0.3);
        voice.talk('回転します');
        break;
			case 'ドローンストップ' :
        client.stop();
        voice.talk('停止します');
        break;
      case 'ドローンアニメーションジャンプ' :
        client.stop();
        client.animate('flipBehind', 15);
        voice.talk('ジャンプ');
        break;
      case 'ドローンアニメーションターン' :
        client.stop();
        client.animate('turnaround', 2000);
        client
          .after(2000, function() {
            this.stop();
          });
        voice.talk('ターン');
        break;
      case 'ドローンアニメーションウエイブ' :
        client.stop();
        client.animate('wave', 2000);
        client
          .after(2000, function() {
            this.stop();
          });
        voice.talk('ウエイブ');
        break;
		}
	});

  voice.talk('テコラス 株式会社 ドローンシステム バージョン0.01 起動します。');
	console.log('テコラス 株式会社 ドローンシステム バージョン0.01 起動します。');
	// 音声認識の開始
	setTimeout(function() {
        julius.start();
    }, 10000);
});
Esempio n. 2
0
grammar.compile(function(err, result){
    if (err) throw err

    var julius = new Julius(grammar.getJconf());

    // 発話待機
    julius.on('speechReady', function() {
        console.log('onSpeechReady');
    });

    // 発話開始
    julius.on('speechStart', function() {
        console.log('onSpeechStart');
    });

    // 発話終了
    julius.on('speechStop', function() {
        console.log('onSpeechStop');
    });

    // 音声認識エンジン開始
    julius.on('start', function() {
        console.log('onStart');
    });

    // 音声認識エンジン一時停止(stop した時に呼ばれる)
    julius.on('pause', function() {
        console.log('onPause');
    });

    // 認識結果を str で返す
    julius.on('result', function(str) {
        console.log('認識結果:', str);
        if (commandMode == "done"){
            switch (str){
                case commonKeyword["startStr"]:
                    commandMode = "normal";
                    keepAliveTimer("なに?")
                    break;
            }
        }else if(commandMode == "normal"){
            switch (str){
                    // case roopKeyword["twoStr"]:
                    //     roopTime = 2;
                    //     keepAliveTimer("にかい繰り返します");
                    //     break;
                    // case roopKeyword["threeStr"]:
                    //     roopTime = 3;
                    //     keepAliveTimer("さんかい繰り返します");
                    //     break;
                    // case roopKeyword["fourStr"]:
                    //     roopTime = 4;
                    //     keepAliveTimer("よんかい繰り返します");
                    //     break;
                    // case roopKeyword["fiveStr"]:
                    //     roopTime = 5;
                    //     keepAliveTimer("ごかい繰り返します");
                    //     break;
                    // case roopKeyword["sixStr"]:
                    //     roopTime = 6;
                    //     keepAliveTimer("ろっかい繰り返します");
                    //     break;
                    // case roopKeyword["sevenStr"]:
                    //     roopTime = 7;
                    //     keepAliveTimer("ななかい繰り返します");
                    //     break;
                    // case roopKeyword["eigthStr"]:
                    //     roopTime = 8;
                    //     keepAliveTimer("はちかい繰り返します");
                    //     break;
                    // case roopKeyword["nineStr"]:
                    //     roopTime = 9;
                    //     keepAliveTimer("きゅうかい繰り返します");
                    //     break;
                    // case roopKeyword["tenStr"]:
                    //     roopTime = 10;
                    //     keepAliveTimer("じゅっかい繰り返します");
                    //     break;
                    case commonKeyword["todayForecastStr"]://今日の天気は
                        speakForecast("today");
                        break;
                    case commonKeyword["tomorrowForecastStr"]://明日の天気は
                        speakForecast("tomorrow");
                        break;
                    case commonKeyword["timeNowStr"]://いまなんじ
                        timeNow();
                        break;
                    case commonKeyword["goodMorningStr"]://おはよう
                        morningGreeting();
                        break;
                    case commonKeyword["allStr"]://すべての機器よ
                        commandMode = "all";
                        keepAliveTimer("はい");
                        break;
                    case commonKeyword["lightStr"]://電気モード
                        commandMode = "light";
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["airStr"]://エアコンモード
                        commandMode = "air"
                        keepAliveTimer(str);
                        break;
                    // case commonKeyword["roopStr"]:
                    //     commandMode = "roop";
                    //     keepAliveTimer(str);
                    //     break;
                    case commonKeyword["closeStr"]://操作終了
                        close();
                        break;
                    case blueRayKeyword["blueRayStr"]://ブルーレイモード
                        commandMode = "powerBluRay";
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["tvStr"]://テレビモード
                        commandMode = "powerTv";
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["chapterNextStr"]://チャプターつぎ
                        blueClient.write('DSKF    \n');
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["chapterBeforeStr"]://チャプターまえ
                        blueClient.write('DSKB    \n');
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["stopPlayStr"]://停止
                        blueClient.write('DPUS    \n');
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["playStr"]://再生
                        blueClient.write('DPLY    \n');
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["endPlayStr"]://再生終了
                        blueClient.write('DSTP    \n');
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["fastForwardStr"]://巻き戻し
                        blueClient.write('DFWD    \n');
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["rewindStr"]://早送り
                        blueClient.write('DREV    \n');
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["onStr"]://起動
                        blueClient.write('POWR1   \n');
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["offStr"]://電源OFF
                        blueClient.write('POWR0   \n');
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["programsStr"]://録画リスト
                        irkitSignal(freq_list.programs);
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["upStr"]://うえいどう
                        irkitSignal(freq_list.up);
                        keepAliveTimer(str);
                        break;
                    case blueRayKeyword["downStr"]://したいどう
                        irkitSignal(freq_list.down);
                        keepAliveTimer(str);
                        break;
                    // case blueRayKeyword["rightStr"]://右移動
                    //     irkitSignal(freq_list.right);
                    //     keepAliveTimer(str);
                    //     break;
                    // case blueRayKeyword["leftStr"]://左移動
                    //     irkitSignal(freq_list.left);
                    //     keepAliveTimer(str);
                    //     break;
                    case blueRayKeyword["backStr"]://もどる
                        irkitSignal(freq_list.back);
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["channelNextStr"]://チャンネルつぎ
                        tvClient.write('CHUP    \n');
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["channelBeforeStr"]://チャンネルまえ
                        tvClient.write('CHDW    \n');
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["modeChangeStr"]://入力切替
                        tvClient.write('ITGD    \n');
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["wiiUStr"]://wiiu
                        irkitSignal(freq_list.wiiu);
                        tvClient.write('IAVD3   \n');
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["ps4Str"]://ps4
                        tvClient.write('IAVD3   \n');
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["volumeUpStr"]://おんりょうだい
                        volume += 2;
                        tvClient.write("VOLM"+volume+"  \n");
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["volumeDownStr"]://おんりょうしょう
                        volume -= 2;
                        tvClient.write("VOLM"+volume+"  \n");
                        keepAliveTimer(str);
                        break;
                    default:
                        keepAliveTimer("ん?");
                }
            } else if(commandMode == "powerBluRay"){
                switch(str){
                    case commonKeyword["onStr"]://起動
                        blueClient.write('POWR1   \n');
                        keepAliveTimer(str);
                        commandMode = "normal";
                        break;
                    case commonKeyword["offStr"]://電源OFF
                        blueClient.write('POWR0   \n');
                        keepAliveTimer(str);
                        commandMode = "normal";
                        break;
                    case commonKeyword["normalStr"]://ノーマルモード
                        commandMode = "normal"
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["lightStr"]://電気モード
                        commandMode = "light";
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["airStr"]://エアコンモード
                        commandMode = "air"
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["closeStr"]://操作終了
                        close();
                        break;
                    case blueRayKeyword["blueRayStr"]://ブルーレイモード
                        commandMode = "powerBluRay";
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["tvStr"]://テレビモード
                        commandMode = "powerTv";
                        keepAliveTimer(str);
                        break;
                }
            } else if(commandMode == "powerTv"){
                switch(str){
                    case commonKeyword["onStr"]://起動
                        tvClient.write('POWR1   \n');
                        keepAliveTimer(str);
                        commandMode = "normal";
                        break;
                    case commonKeyword["offStr"]://電源OFF
                        tvClient.write('POWR0   \n');
                        keepAliveTimer(str);
                        commandMode = "normal";
                        break;
                    case commonKeyword["normalStr"]://ノーマルモード
                        commandMode = "normal"
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["lightStr"]://電気モード
                        commandMode = "light";
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["airStr"]://エアコンモード
                        commandMode = "air"
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["closeStr"]://操作終了
                        close();
                        break;
                    case blueRayKeyword["blueRayStr"]://ブルーレイモード
                        commandMode = "powerBluRay";
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["tvStr"]://テレビモード
                        commandMode = "powerTv";
                        keepAliveTimer(str);
                        break;
                    default:
                        keepAliveTimer("ん?");
                }
            } else if(commandMode == "air"){
                switch(str){
                    case commonKeyword["onStr"]://起動
                        irkitSignal(freq_list.coolAirOn);
                        keepAliveTimer(str);
                        commandMode = "normal"
                        break;
                    case commonKeyword["offStr"]: //電源OFF
                        irkitSignal(freq_list.airOff);
                        keepAliveTimer(str);
                        commandMode = "normal"
                        break;
                    case commonKeyword["reserveStr"]://予約
                        irkitSignal(freq_list.airSet);
                        keepAliveTimer(str);
                        commandMode = "normal";
                        break;
                    case commonKeyword["normalStr"]://ノーマルモード
                        commandMode = "normal"
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["lightStr"]://電気モード
                        commandMode = "light";
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["airStr"]://エアコンモード
                        commandMode = "air"
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["closeStr"]://操作終了
                        close();
                        break;
                    case blueRayKeyword["blueRayStr"]://ブルーレイモード
                        commandMode = "powerBluRay";
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["tvStr"]://テレビモード
                        commandMode = "powerTv";
                        keepAliveTimer(str);
                        break;
                    default:
                        keepAliveTimer("ん?");
                }
            } else if(commandMode == "light"){
                switch(str){
                    case commonKeyword["changeStr"]:
                        irkitSignal(freq_list.light);
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["onStr"]:
                        irkitSignal(freq_list.light);
                        setTimeout(function(){
                            irkitSignal(freq_list.light);
                        }, 500);
                        setTimeout(function(){
                            irkitSignal(freq_list.light);
                        }, 1000);
                        commandMode = "normal";
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["offStr"]:
                        irkitSignal(freq_list.light);
                        setTimeout(function(){
                            irkitSignal(freq_list.light);
                        }, 500);
                        commandMode = "normal";
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["normalStr"]://ノーマルモード
                        commandMode = "normal"
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["lightStr"]://電気モード
                        commandMode = "light";
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["airStr"]://エアコンモード
                        commandMode = "air"
                        keepAliveTimer(str);
                        break;
                    case commonKeyword["closeStr"]://操作終了
                        close();
                        break;
                    case blueRayKeyword["blueRayStr"]://ブルーレイモード
                        commandMode = "powerBluRay";
                        keepAliveTimer(str);
                        break;
                    case tvKeyword["tvStr"]://テレビモード
                        commandMode = "powerTv";
                        keepAliveTimer(str);
                        break;
                    default:
                        keepAliveTimer("ん?");
                }
            } else if(commandMode == "all"){
                switch(str){
                    case commonKeyword["silenceStr"]:
                        blueClient.write('POWR0   \n');
                        tvClient.write('POWR0   \n');
                        irkitSignal(freq_list.light);
                        irkitSignal(freq_list.airOff);
                        setTimeout(function(){
                            irkitSignal(freq_list.light);
                        }, 500)
                        keepAliveTimer("かしこまりました");
                        commandMode = "normal";
                        break;
                    case commonKeyword["wakeUpStr"]:
                        tvClient.write('POWR1   \n');
                        irkitSignal(freq_list.light);
                        setTimeout(function(){
                            irkitSignal(freq_list.light);
                        }, 500);
                        setTimeout(function(){
                            irkitSignal(freq_list.light);
                        }, 1000);
                        keepAliveTimer("かしこまりました");
                        commandMode = "normal";
                        break;
                }
            }
    });

    // juliusエラー処理
    julius.on('error', function(str) {
        console.error('エラー', str);
    });

    julius.start();
})