Ubuntu 22.04下Firefox/Chromium调用speechSynthesis.getVoices返回空数组
解决Ubuntu 22.04升级后浏览器TTS无法访问语音引擎的问题
针对升级后浏览器speechSynthesis.getVoices()始终返回空数组,但系统spd-say功能正常的情况,可按以下步骤排查修复:
修复Speech Dispatcher模块权限
浏览器依赖Speech Dispatcher调用系统语音引擎,先确保核心模块权限正常:sudo chmod +x /usr/lib/speech-dispatcher-modules/sd_espeak-ng sudo systemctl restart speech-dispatcher.service重置用户级Speech Dispatcher配置
升级残留的旧配置可能导致冲突,删除用户目录下的配置文件后重启服务:rm -rf ~/.config/speech-dispatcher systemctl --user restart speech-dispatcher.service确认浏览器语音合成权限
打开浏览器设置,依次进入「隐私和安全」-「网站设置」-「语音合成」,确保允许网站使用该功能。部分浏览器需在「权限」面板单独确认此选项已开启。强制触发浏览器语音加载
打开浏览器开发者工具(F12),在控制台执行以下代码,手动触发语音列表加载事件:speechSynthesis.onvoiceschanged = () => { console.log(speechSynthesis.getVoices()); }; speechSynthesis.getVoices();查看控制台输出,确认是否返回语音列表。
补全依赖包
升级过程中可能缺失浏览器与Speech Dispatcher交互的依赖,执行以下命令安装:sudo apt install libspeechd-dev speech-dispatcher-espeak-ng安装完成后重启浏览器重试。
内容的提问来源于stack exchange,提问作者Sharcoux
相关产品推荐
相关产品推荐

