繁体   English   中英

如何从Speech Synthesis API访问音频结果?

[英]How to access audio result from Speech Synthesis API?

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

TTS系统没有标准的音频输出,这看起来非常有意,所以不太可能很快改变。

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

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

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

因此,除了实际播放之外,TTS引擎没有标准方式来指示产生的音频。 根据特定的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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM