9

我在我的扩展程序中使用 Chrome 的 tts 服务。根据chrome.tts文档:

文本的最大长度为 32,768 个字符。

但是,当我传递超过 250 个字符的字符串时,引擎不会读取所有话语(它只会在单词中间停止读取)。我现在想知道这是一个错误还是设计使然。Web 语音 API 具有规范中描述的类似字符限制,并且其行为方式相同。

我想知道我是否做错了什么,或者它只依赖于浏览器中的 TTS 引擎而我对此无能为力?

4

1 回答 1

5

我已阅读官方文档以及您如何报告它是这样写的:

The maximum length of the text is 32,768 characters.

也许他们指的是 SSML 文件最大长度!

我使用了一段时间的 chrome api,我可以对你说:

  • 只有当声音不是母语时才会发生话语中断,
  • 剪切通常发生在 200-300 个字符之间,当它中断时,您可以通过执行 SpeechSynthesis.cancel() 来取消冻结它;
  • 'onend' 事件有时决定不触发。一个古怪的解决方法是在说出它之前 console.log() 输出话语对象。此外,我发现将 speak 调用包装在 setTimeout 回调中有助于解决这些问题。

我解决了拆分文本的问题:

  • 首先在句子中(尝试非拆分它们并保持韵律);
  • 如果第一步不充分,则将句子再次拆分为子句;

所以我建议以这种方式解决问题。

于 2015-07-01T13:43:13.227 回答