问题描述
我正在firefox中测试本机语音合成器,它工作正常,只有pause()函数失败,但是在chrome中,我有更多错误,它只播放文本的一小部分,仅显示前200个字符,并且它不能播放其他所有内容,我尝试了外部meSpeak.js库,如果可以播放所有内容,但是加载测试所需的1842个字符的文本需要花费很长时间,则我使用的是chrome版本的ubuntu系统81.0.4044.92 测试https://mdn.github.io/web-speech-api/speak-easy-synthesis/的网址 铬的任何解决方案谢谢
解决方法
我认为这是所选语音合成器的问题。如果您选择一种 local 语音-只需通过在本地计算机上运行浏览器/操作系统内代码即可生成音频的语音-那么该字符就没有限制,除非您使用该语音选择了这样的限制,似乎不太可能
例如,在Windows上,我拥有的两个本地声音是Microsoft David Desktop和Microsoft Zira Desktop。如果我选择这些声音,则无论长度如何,都会播放整个文本。
相反,其他声音,例如来自Google的声音(例如Google US English)不是本地声音;他们可能需要提出网络请求,以将文本解析为音频。 Google的语音API似乎可以一次翻译多少个文本,限制为200个字符左右。
如果字符限制有问题,请选择本地语音,而不是Google语音。
下面是一个片段,其中列出了您的可用声音以及本地声音:
const populateVoiceList = () => {
console.log('Logging available voices');
for (const voice of speechSynthesis.getVoices()) {
console.log(voice.name,'local: ' + voice.localService);
}
};
populateVoiceList();
speechSynthesis.onvoiceschanged = populateVoiceList;