问题描述
我有一个非常简单的网站,它使用html5语音识别API将音频转换为文本。 我的目标是让它在Android中的webview中工作,但我收到此错误:
“未捕获的TypeError:无法设置未定义的属性'lang'”,来源: :
有任何想法吗?
这是我的MainActivity:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("https://example.com/");
}
}
这是我的javascript:
var final_transcript = '';
var recognizing = false;
if ('webkitSpeechRecognition' in window) {
var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;
recognition.onstart = function() {
recognizing = true;
}
recognition.onerror = function(event) {
console.log(event.error);
};
recognition.onend = function() {
recognizing = false;
}
recognition.onresult = function(event) {
var interim_transcript = '';
for (var i = event.resultIndex; i < event.results.length; ++i) {
if (event.results[i].isFinal) {
final_transcript += event.results[i][0].transcript;
document.getElementById("textresult").innerHTML = linebreak(interim_transcript);
} else {
interim_transcript += event.results[i][0].transcript;
document.getElementById("textresult").innerHTML = linebreak(interim_transcript);
}
}
final_transcript = capitalize(final_transcript);
document.getElementById("textresult").innerHTML = linebreak(interim_transcript);
document.getElementById("textresult").innerHTML = linebreak(final_transcript);
};
}
var two_line = /\n\n/g;
var one_line = /\n/g;
function linebreak(s) {
return s.replace(two_line, '<p></p>').replace(one_line, '<br>');
}
function capitalize(s) {
return s.replace(s.substr(0,1), function(m) { return m.toUpperCase(); });
}
function startDictation(event) {
if (recognizing) {
recognition.stop();
return;
}
final_transcript = '';
recognition.lang = 'en-US';
recognition.start();
final_span.innerHTML = '';
interim_span.innerHTML = '';
}
</script>
1楼
您可以尝试在此行上方声明您的recognition
变量吗?
if ('webkitSpeechRecognition' in window)