2014-10-05 3 views
0

Я пытаюсь создать веб-приложение с использованием Web Speech API, где вначале пользователь нажимает кнопку, чтобы начать речевую запись. Я пытаюсь остановить его, когда пользователь перестает говорить, а затем я хочу использовать Google Translate API для перевода речи от пользователя. Я включил код для части Web Speech, с которой у меня возникают проблемы.JavaScript Web Speech API, когда использовать .start() в отличие от .speechstart()?

if (window.webkitSpeechRecognition) { 
    recognition = new webkitSpeechRecognition(); 
    recognition.continuous = true; 
    recognition.interimResults = false; 
    recognition.onresult = function(event) { 
    var i; 
    return $('#transcript').text($('#transcript').text() + ((function() { 
     var _i, _ref, _ref1, _results; 
     _results = []; 
     for (i = _i = _ref = event.resultIndex, _ref1 = event.results.length - 1; _i <= _ref1; i = _i += 1) { 
     _results.push(event.results[i][0].transcript); 
     } 
     return _results; 
    })()).join('')); 
    }; 

    $('#startStopButton').on('click', function() { 
    if (this.innerText === 'Start') { 
     this.innerText = 'Stop'; 
     recognition.lang = 'en-AU'; 
     return recognition.speechstart(); 
    } else { 
     this.innerText = 'Start'; 
     return recognition.speechend(); 
    } 
    }); 
} else { 
    alert('Cannot access the speech recognition API. Are you using Chrome 25+ ?'); 
} 

ответ

1

Что касается распознавания речи:

Во-первых, вы должны установить continous свойство вашего SpeechRecognition объекта в false (или не установить его в true, так как false значение по умолчанию)

recognition.continuous = false; 

(это должно обеспечить обнаружение в конце речи, то есть распознаватель остановится после обнаружения конца речи)

Кроме того, ваш код щелкать-обработчик кажется странным: веб-Speech API определяет start() и stop(), но вы, кажется, используют speechstart() и speechend() ... Я хотел бы предложить, вы используете

recognition.start() 

и

recognition.stop() 

также эти функции не имеют возвращаемого значения, поэтому не нужно использовать return recognition.start().

Чтобы сохранить синхронизацию вашей кнопки, я бы предложил добавить обработчики для onend и onerror, например.

recognition.onend = function(event){ 
    $('#startStopButton').text('Start'); 
}; 

Для получения более подробной информации посмотрите на Web Speech API