我正在嘗試使用語音識別API創建基於HTML5的語音控制編輯器。目前,問題在於當你開始錄製時,它只會持續一段時間(基本上直到用戶停止說話)。語音識別 - 連續運行
我可以將continuous
和interimResults
設置爲true
,但這並不會永久記錄下來。它仍然結束。
我也可以告訴它在結束事件期間再次啓動,但每次都要求獲得許可,這是非常具有破壞性的。
有沒有辦法讓它持續下去而只需要詢問用戶一次?
我正在嘗試使用語音識別API創建基於HTML5的語音控制編輯器。目前,問題在於當你開始錄製時,它只會持續一段時間(基本上直到用戶停止說話)。語音識別 - 連續運行
我可以將continuous
和interimResults
設置爲true
,但這並不會永久記錄下來。它仍然結束。
我也可以告訴它在結束事件期間再次啓動,但每次都要求獲得許可,這是非常具有破壞性的。
有沒有辦法讓它持續下去而只需要詢問用戶一次?
無論您選擇哪種設置,谷歌瀏覽器會在一段時間後停止語音識別引擎......這是無法解決的。
我發現連續語音識別的唯一可靠解決方案是,按照您的建議,通過綁定到onend()
事件再次啓動它。
如果你嘗試了類似的技術,要注意以下事項:
如果你不使用HTTPS,用戶將被提示一遍又一遍地在每次重啓再次給予許可。爲此以及其他許多原因,在使用語音識別時不要在HTTP上妥協。
請確保您沒有立即重新啓動語音識別onend()沒有一些保護措施,以確保您沒有將瀏覽器置於無限循環(例如,兩個打開的標籤onend(function() {restart()})
可以使瀏覽器崩潰,詳細的在這個錯誤報告:https://code.google.com/p/chromium/issues/detail?id=296690) 請參閱https://github.com/TalAter/annyang/blob/master/annyang.js#L152我如何處理這個。
如果它結束的原因是一樣的東西service-not-allowed
或not-allowed
見https://github.com/TalAter/annyang/blob/master/annyang.js#L132
你可以看到我是如何處理這個在我的代碼不AUTORESTART - https://github.com/TalAter/annyang/blob/master/annyang.js
請試試這個代碼,我認爲它你需要什麼:
<!DOCTYPE html>
<html>
<head>
<title>Speech recognition</title>
<style>
#result{
border: 2px solid black;
height: 200px;
border-radius: 3px;
font-size: 14px;
}
button{
position: absolute;
top: 240px;
left: 50%;
}
</style>
<script type="application/javascript">
function start(){
var r = document.getElementById("result");
if("webkitSpeechRecognition" in window){
var speechRecognizer = new webkitSpeechRecognition();
speechRecognizer.continuous = true;
speechRecognizer.interimResults = true;
speechRecognizer.lang = "en-US";
speechRecognizer.start();
var finalTranscripts = "";
speechRecognizer.onresult = function(event){
var interimTranscripts = "";
for(var i=event.resultIndex; i<event.results.length; i++){
var transcript = event.results[i][0].transcript;
transcript.replace("\n", "<br>");
if(event.results[i].isFinal){
finalTranscripts += transcript;
}
else{
interimTranscripts += transcript;
}
r.innerHTML = finalTranscripts + '<span style="color: #999;">' + interimTranscripts + '</span>';
}
};
speechRecognizer.onerror = function(event){
};
}
else{
r.innerHTML = "Your browser does not support that.";
}
}
</script>
</head>
<body>
<div id="result"></div>
<button onclick="start()">Listen</button>
</body>
</html>
@samanime如果您認爲這是最準確的答案,請將答案標記爲正確答案。 –