7

Speech Synthesis API允许 Chrome Beta 中的文本转语音功能。但是,浏览器会自动播放 TTS 请求的结果。如何访问音频结果以进行后处理并禁用 API 的默认行为?

4

1 回答 1

1

TTS 系统没有标准音频输出,这似乎是有意为之,因此不太可能很快改变。

要了解原因,您可以查看该界面的另一侧,其中浏览器扩展可以充当 TTS 引擎并提供客户端可以使用的语音:

作为 chrome 中此 API 可访问的有效 TTS 引擎,它支持启动/暂停/取消和恢复 TTS 请求,并将进度更新作为以下类型的事件发送:

https://developer.chrome.com/extensions/tts#type-TtsEvent

因此,除了实际播放之外,TTS 引擎没有标准的方式来指示生成的音频。根据具体的 TTS 引擎,它可能不会使用标准的音频格式甚至浏览器的正常音频设备访问。(例如,它可能会将文本转发到平台的无障碍系统。)

如果您对特定的 TTS 引擎有所了解(或创建自己的引擎),那么您可以构建自己的接口1来检索音频文件。但是该 TTS 引擎必须安装在您要使用它的每个客户端的浏览器上。这就是为什么任何解决方案都必须将您指向特定的 TTS 引擎或外部 TTS 解决方案,如果您想要控制播放而不是调整对 TTS 引擎请求的有效输入(相对音高、相对音量、相对速率、性别)。

笔记-

1如果你给一个 TTS 引擎这样一个接口,它不能轻易地扩展现有的 TTS 事件 API,因为浏览器正在检查它们:

// attempt to add properties to an otherwise legal event in an Engine:
sendTTSev({'type': 'end', 'charIndex': len, foo:'george'});
...
Uncaught Error: Invalid value for argument 2. Property 'foo': Unexpected property.
    at validate (extensions::schemaUtils:34:13)
    at Object.normalizeArgumentsAndValidate  (extensions::schemaUtils:117:3)
    at Object.<anonymous> (extensions::binding:361:30)
    at sendTtsEvent (extensions::ttsEngine:17:22)
于 2015-04-08T19:27:31.547 回答