likes
comments
collection
share

GPT也没有解决的语音合成问题😭

作者站长头像
站长
· 阅读数 35

继续探索使用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上实现文本转语音没有找到,那位大神有解决办法希望可以教教我🤭!

转载自:https://juejin.cn/post/7221910604469927994
评论
请登录