GPT也没有解决的语音合成问题😭
继续探索使用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上实现文本转语音没有找到,那位大神有解决办法希望可以教教我🤭!
转载自:https://juejin.cn/post/7221910604469927994