Commit 82546fba authored by Ota Mikusek's avatar Ota Mikusek
Browse files

Fix speach recognition

parent 068c128d
Loading
Loading
Loading
Loading
+44 −34
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ var PREFIX = "http://epimetheus3.fi.muni.cz:6030/";

var LANG = "en"
var WORD_CONFIDENCE_THRESHOLD = {
    "en": 0.4,
    "en": 0.5,
    "cs": 0.4
}

@@ -14,9 +14,8 @@ var element_exit_button = document.getElementById("button-exit");
var element_app_name = document.getElementById("app-name");
var element_element_list_name = document.getElementById("element-list-name");

var combine_words_interval = null;
var last_detected_word = null;
var last_detected_confidence = null;
var detected_word_extracted = null;
var combine_words_memory_subscription = null;

var ALSpeechRecognitionSubscription = null;

@@ -65,42 +64,44 @@ var discovered_elements = [];
function robot_element_recognition() {
    RobotUtils.onService(function(ALSpeechRecognition) {
        ALSpeechRecognitionSubscription = ALSpeechRecognition;
        ALSpeechRecognitionSubscription.pause(true).then(function(){
            ALSpeechRecognitionSubscription.setLanguage("English").then(function(){
                ALSpeechRecognitionSubscription.setVocabulary(discovered_elements, true).then(function(){
                    ALSpeechRecognitionSubscription.pause(false).then(function(){
                        ALSpeechRecognitionSubscription.subscribe(AL_SPEACH_RECOGNITION_SUB_NAME);
        ALSpeechRecognitionSubscription.pause(true);
        ALSpeechRecognitionSubscription.setVocabulary(discovered_elements, true)
        ALSpeechRecognitionSubscription.setLanguage("English")
        ALSpeechRecognitionSubscription.pause(false);
                    });
                });
            });
        });
    });
}

function robot_set_voice_speed(speed) {
    RobotUtils.onService(function(ALTextToSpeech) {
        ALTextToSpeech.setParameter("speed", speed);
    RobotUtils.onService(function(ALTextToSpeech, ALSpeechRecognition) {
        ALSpeechRecognition.pause(true).then(function() {
            ALTextToSpeech.setParameter("speed", speed).then(function(){
                ALSpeechRecognition.pause(false);
            });
        });
    });
}
robot_set_voice_speed(89);

function robot_start_voice_word_combining() {
    if (combine_words_interval == null) {
        combine_words_interval = setInterval(function() {
            RobotUtils.onService(function(ALMemory) {
                ALMemory.getData("WordRecognized").then(function(detected_word) {
                    alert(detected_word);
                    detected_word_extracted = detected_word[0].substr(6, detected_word[0].length - 12);
                    if (WORD_CONFIDENCE_THRESHOLD[LANG] > detected_word[1]) return;
                    
                    if (last_detected_confidence != detected_word[1] || last_detected_word != detected_word_extracted) {
function onWordRecognized(value) {
    detected_word_extracted = value[0].substr(6, value[0].length - 12);
    if (WORD_CONFIDENCE_THRESHOLD[LANG] > value[1]) return;

    for (var i = 0; i < discovered_elements.length;i++) {
        if (detected_word_extracted == discovered_elements[i]) {
            add_to_combination(detected_word_extracted);
        }
    }
}
                    last_detected_word = detected_word_extracted;
                    last_detected_confidence = detected_word[1];
                });
            });
        }, 5000);


function robot_start_voice_word_combining() {
    if (combine_words_memory_subscription == null) {
        combine_words_memory_subscription = RobotUtils.subscribeToALMemoryEvent("WordRecognized", onWordRecognized);         
    }
}

@@ -147,7 +148,7 @@ function add_to_combination(word) {
            return
        }
        var new_word = j["result"]["combination"]
        add_element(new_word);
        add_element(new_word, true);
        element_element_result.innerText = last_word + " + " + word + " = " + new_word;
        var text = dialogs[LANG]["word_cration_1"] + new_word + dialogs[LANG]["word_cration_2"] + last_word + dialogs[LANG]["word_cration_3"] + word + dialogs[LANG]["word_cration_4"];
        if (j["result"]["is_new_word"]) {
@@ -165,11 +166,20 @@ function add_to_combination(word) {
    })
}

function add_element(word) {
function add_element(word, is_update) {
    for (var i = 0;i < discovered_elements.length;i = i + 1) {
        if (discovered_elements[i] == word) return;
    }
    discovered_elements.push(word);
    if (is_update) {
        RobotUtils.onService(function(ALSpeechRecognition) {
            ALSpeechRecognition.pause(true).then(function(){
                ALSpeechRecognition.setVocabulary(discovered_elements, true).then(function(){
                    ALSpeechRecognition.pause(false).then(function(){});
                });
            });
        });
    }

    var new_element = document.createElement('div');
    new_element.classList.add('element');
@@ -198,7 +208,7 @@ function robot_get_language() {
                    alert(j["error"]);
                }
                for (var i = 0;i < j["result"]["words"].length;i = i + 1) {
                    add_element(j["result"]["words"][i])
                    add_element(j["result"]["words"][i], false)
                }
                robot_element_recognition();
            })
+1 −1
Original line number Diff line number Diff line
<package uuid="pepper-infinite-craft-pkg" version="0.4.102">
<package uuid="pepper-infinite-craft-pkg" version="0.7.29">
  <names>
    <name lang="en_US">pepper-infinite-craft-pkg</name>
    <name lang="cs_CZ">pepper-infinite-craft-pkg</name>