TTS(Text-to-speech)文字轉語音使用的是阿里云的服務,文檔地址:
https://help.aliyun.com/zh/isi/developer-reference/streaming-text-tts-wss
文檔只給出了一些配置項的說明,以及java端的代碼示例,但沒有web端的。所以這篇筆記可以給web開發者參考。
首先,AI答復的消息是通過SSE(server-sent events)返回的。SSE請求的實現流程后續有時間再填坑。
代碼實現中,使用了一個onReply回調來執行后續動作。 這個方法會連續多次執行,直到消息結束。
SSE是單向的,只能由服務端向客戶端推送,而流式TTS這種雙向通信需要通過socket來實現。
socket的實現,原本是打算用封裝了心跳、房間等概念的socket.io
,但后來發現這個功能實現并不需要用到保活和長連接,發送和接收都完成以后,直接關閉socket連接即可,不用考慮那些復雜邏輯。
所以socket的連接可以直接使用vueuse
的工具方法useWebSocket
業務流程大致如下: