weixin_41244451 2024-09-03 20:50 采纳率: 93.9%
浏览 3

语音在华为手机的Edge浏览器上就可以正常读出来,在oppo等其它手机上的Edge浏览器上就读不出来?


 
 
// 检查浏览器是否支持语音合成
if ('speechSynthesis' in window) {
    // 创建一个函数来朗读文本
    function speak(text) {
        const utterance = new SpeechSynthesisUtterance(text.replace(/-/g, '减').replace(/=/g, '等于').replace(/\+/g,'加').replace(/\加加/g,'加').replace(/×/g,'乘以'));
        utterance.rate = yusu; // 语速*1
        speechSynthesis.speak(utterance);
    }
    function speak1(text) {
        const utterance = new SpeechSynthesisUtterance(text);
        utterance.rate = 1; // 语速*1
        speechSynthesis.speak(utterance);
 
    }
    if(xingshi==3 || xingshi==4)
    {
        speak1('请听题');
    }
    // 修改displayQuestion函数,使其在显示问题的同时朗读问题
    function displayQuestion(question,operator,fuhao) {
        // 调用speak函数,将问题转换为语音
        if(xingshi==3 || xingshi==4)
        {
            speak(operator + question + fuhao);
        }
        else
        {
            document.getElementById('question').textContent = question;
        }
    }
} else {
    console.error('当前浏览器不支持语音合成');
}

为什么上面的代码,语音在华为手机的Edge浏览器上就可以正常读出来,在oppo等其它手机上的Edge浏览器上就读不出来?

  • 写回答

1条回答 默认 最新

  • 吃不了席 2024-09-03 20:51
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    这个问题涉及到JavaScript语言以及浏览器兼容性的问题。

    首先,你需要确保你的HTML文档中包含了<script>标签,用于引入JavaScript文件,并且正确地导入了SpeechSynthesis接口。此外,你也需要检查你的浏览器是否支持JavaScript和Web Speech API(即语音合成API)。这通常可以通过检查浏览器的开发者工具中的"性能"选项卡来实现。

    对于华为手机的Edge浏览器,它可能已经默认启用了Web Speech API,因此在某些情况下,可能会自动启用语音合成功能并将其应用于文本内容。而OPPO等其他手机可能没有这样的设置,默认情况下并不启用Web Speech API,因此在这些设备上,语音合成功能可能不会被触发。

    要解决这个问题,你可以尝试以下方法:

    1. 添加自定义事件监听器:如果你正在处理的是特定的操作,比如点击按钮时调用某个函数,那么可以在相应的事件处理程序中添加一个检测Web Speech API状态的逻辑。例如:

      // 在您的HTML页面中
      <button onclick="checkSpeech()">测试按钮</button>
      
      // 在JavaScript文件中
      function checkSpeech() {
          if (speechSynthesis && speechSynthesis.isSpeaking) {
              alert("Web Speech API 已经激活");
          } else {
              alert("Web Speech API 未激活");
          }
      }
      
    2. 使用第三方库:许多现代浏览器提供了内置的语音识别插件,如Google的web Speech API、Microsoft的Voice.js等。这些插件可以提供更强大的语音识别功能,并且在不同的浏览器中都得到了很好的支持。你可以考虑使用这些插件替代Web Speech API。

    3. 使用脚本技术:除了JavaScript,还有其他技术也可以实现语音合成的功能,如Node.js、Python的SpeechRecognition模块等。通过这些技术,你可以根据实际需求选择合适的解决方案。

    总结来说,问题的关键在于如何判断Web Speech API的状态,并根据这个状态决定是否执行语音合成操作。以上提到的方法都是基于JavaScript的基本概念和浏览器的特性进行的,应该能够有效地解决你的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月3日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?