继续探究运用JavaScript调用Android系统自带的Text-to-Speech引擎(TTS)。
为了方便在手机上调试我引入了vConsole
:是腾讯开发的一个轻量级、可扩展的前端开发工具,专为移动端网页而设计。它是一个根据Web技术的前端调试面板,能够经过在移动设备中打开该工具来辅助进行页面和JS的调试。vConsole支持多种功用,包含运行JS代码、检查cookie、抓包等,其功用与电脑端控制台相似。vConsole也支持在任何结构应用程序中运用,比方Vue或React等。
html5中引入代码:在head标签中新建两个script
<head>
...
<script src="https://cdn.bootcss.com/vConsole/3.3.4/vconsole.min.js"></script>
<script>
var vConsole = new VConsole();
</script>
</head>
运行html右下角出现一个绿色图标就说明引入成功了。
控制台打印出来报错信息:
这次直接把报错信息给gpt让他出解决方案
gpt:这个过错或许是因为在代码中运用了过时的结构函数,应该运用新的结构函数来初始化TextToSpeech
。下面是一个正确的例子:
// 初始化TextToSpeech
let tts = new window.speechSynthesis();
// 设置语音选项
let voices = tts.getVoices();
let options = {
voiceURI : 'native',
voice: voices[3],
rate: 1.0,
pitch: 1.0,
lang: 'en-US'
}
// 创立一个新的SpeechSynthesisUtterance目标和绑定选项到它上面
let speechUtterance = new SpeechSynthesisUtterance('Hello World');
Object.assign(speechUtterance, options);
// 开始朗读
tts.speak(speechUtterance);
这里咱们运用了新的window.speechSynthesis()
结构函数来初始化TextToSpeech目标。
下面是运用 Javascript 来经过 Web Speech API 完成语音组成功用,然后在 WebView 中调用该功用完成语音组成功用(作者没有尝试,感兴趣的能够试一下)
详细完成步骤如下:
-
在 WebView 中启用 JavaScript 功用,可经过以下方法完成:
WebView webView = findViewById(R.id.web_view); // 启用JavaScript功用 WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true);
-
在 HTML 页面中编写 JavaScript 代码,调用 Web Speech API 的 SpeechSynthesis 接口完成语音组成功用,可参考 [3]。
示例代码:
// 创立 SpeechSynthesisUtterance 目标 var utterance = new SpeechSynthesisUtterance(); // 设置要朗读的文本 utterance.text = "Hello World"; // 获取 SpeechSynthesis 目标 var synthesis = window.speechSynthesis; // 开始语音组成 synthesis.speak(utterance);
-
在 WebView 中经过
evaluateJavascript()
办法履行 JavaScript 代码,可经过以下方法完成:// 要履行的JavaScript代码 String jsCode = "var utterance = new SpeechSynthesisUtterance();" + "utterance.text = 'Hello World';" + "var synthesis = window.speechSynthesis;" + "synthesis.speak(utterance);"; // 在WebView中履行JavaScript代码 webView.evaluateJavascript(jsCode, null);
经过上述方法,咱们就能够在 WebView 中完成语音组成功用。
总结
纯js在Android上完成文本转语音没有找到,那位大神有解决办法希望能够教教我!