簡體   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