继续探究运用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也没有解决的语音合成问题
这次直接把报错信息给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 中调用该功用完成语音组成功用作者没有尝试,感兴趣的能够试一下

详细完成步骤如下:

  1. 在 WebView 中启用 JavaScript 功用,可经过以下方法完成:

    WebView webView = findViewById(R.id.web_view);
    // 启用JavaScript功用
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    
  2. 在 HTML 页面中编写 JavaScript 代码,调用 Web Speech API 的 SpeechSynthesis 接口完成语音组成功用,可参考 [3]。

    示例代码:

    // 创立 SpeechSynthesisUtterance 目标
    var utterance = new SpeechSynthesisUtterance();
    // 设置要朗读的文本
    utterance.text = "Hello World";
    // 获取 SpeechSynthesis 目标
    var synthesis = window.speechSynthesis;
    // 开始语音组成
    synthesis.speak(utterance);
    
  3. 在 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上完成文本转语音没有找到,那位大神有解决办法希望能够教教我!