2016-02-06 5 views
0

Я использую следующую демоверсию для распознавания речи. Он работает, но иногда занимает больше времени, чтобы загрузить или распознать речевой текст. Не знаю, почему это так! Но есть ли способ установить тайм-аут по умолчанию для функции распознавания, чтобы, если превышен максимальный максимальный тайм-аут по умолчанию, вызовите другую функцию обратного вызова?Веб-речь api с тайм-аутом по умолчанию в Javascript

<script> 
    // Test browser support 
    window.SpeechRecognition = window.SpeechRecognition  || 
          window.webkitSpeechRecognition || 
          null; 

    if (window.SpeechRecognition === null) { 
    document.getElementById('ws-unsupported').classList.remove('hidden'); 
    document.getElementById('button-play-ws').setAttribute('disabled', 'disabled'); 
    document.getElementById('button-stop-ws').setAttribute('disabled', 'disabled'); 
    } else { 
    var recognizer = new window.SpeechRecognition(); 
    var transcription = document.getElementById('transcription'); 
    var log = document.getElementById('log'); 

    // Recogniser doesn't stop listening even if the user pauses 
    recognizer.continuous = true; 

    // Start recognising 
    recognizer.onresult = function(event) { 
     transcription.textContent = ''; 

     for (var i = event.resultIndex; i < event.results.length; i++) { 
     if (event.results[i].isFinal) { 
      transcription.textContent = event.results[i][0].transcript + ' (Confidence: ' + event.results[i][0].confidence + ')'; 
     } else { 
      transcription.textContent += event.results[i][0].transcript; 
     } 
     } 
    }; 

    // Listen for errors 
    recognizer.onerror = function(event) { 
     log.innerHTML = 'Recognition error: ' + event.message + '<br />' + log.innerHTML; 
    }; 

    document.getElementById('button-play-ws').addEventListener('click', function() { 
     // Set if we need interim results 
     recognizer.interimResults = document.querySelector('input[name="recognition-type"][value="interim"]').checked; 

     try { 
     recognizer.start(); 
     log.innerHTML = 'Recognition started' + '<br />' + log.innerHTML; 
     } catch(ex) { 
     log.innerHTML = 'Recognition error: ' + ex.message + '<br />' + log.innerHTML; 
     } 
    }); 

    document.getElementById('button-stop-ws').addEventListener('click', function() { 
     recognizer.stop(); 
     log.innerHTML = 'Recognition stopped' + '<br />' + log.innerHTML; 
    }); 

    document.getElementById('clear-all').addEventListener('click', function() { 
     transcription.textContent = ''; 
     log.textContent = ''; 
    }); 
    } 
</script> 

Заранее благодарен!

+0

Тайм-аут не является надежным, то API должно быть предусмотрено 'полные/success' методы обратного вызова. – Tushar

+0

Да, но это займет больше времени, чем ожидалось, чтобы попасть в эти функции. –

+0

У меня есть аналогичная проблема [здесь] (http://stackoverflow.com/questions/39255731/speech-recognition-listen-to-long), разрешили ли вы это? – foczki

ответ

0

Не забывайте использовать функцию onspeechend. Эта функция обнаруживает, когда речь закончилась, поэтому вы можете поместить нужные инструкции, когда речь закончилась.

Вы хотите признание заканчивается, когда вы перестаете говорить, так:

Пример:

recognition.onspeechend = function() { 
    recognition.stop(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^