🎙️ TTS 持續串流播放器
📡 WebSocket 協定指令
🔗 Connect
發起 WS 握手,建立持久連線,server 回傳 session.created。
🔌 Disconnect
發送 Close Frame (1000),正常關閉 WS 連線。
🚀 tts.start
清空佇列、中止當前,立刻開始新生成。
⏩ tts.enqueue
加入佇列尾端,不中斷當前,依序等待執行。
🛑 tts.cancel
只停當前生成,佇列其餘任務繼續依序執行。
🛑 tts.cancel_all
中止當前並清空整個佇列,所有任務取消。
🖥️ 客戶端本機操作(含 AudioBuffer 控制)
🔇 清空並靜音
送 tts.cancel 停生成+
立即清除本機 AudioBuffer
(純客戶端)。
🔄 重置
重新載入頁面,重建所有狀態與連線。
⚠️
注意
:tts.cancel / tts.cancel_all 只停止
Server 端生成
,Client 端已緩衝音訊仍會播完。如需立即靜音,請使用
🔇 清空並靜音
。
📋 情境一:排隊連播
🔗 連線 WebSocket
↓
🚀 tts.start "文字A"
↓ server: tts.starting → tts.ready
⚙️ 生成A → 串流播A
播放中,同時可送
⏩ tts.enqueue "文字B"
↓ server: tts.queued,B 進佇列
A 完成後自動執行...
↓
⚙️ 生成B → 串流播B
↓
✅ tts.done
🔁 情境二:中斷重送
🔗 連線 WebSocket
↓
🚀 tts.start "文字A"
↓
⚙️ 生成A → 播A 進行中...
任意時刻再送
🚀 tts.start "文字B"
A 立刻中止、佇列清空
↓ server: tts.starting → tts.ready
⚙️ 生成B → 串流播B
↓
✅ tts.done
✂️ 情境三:中斷生成
🚀 start "A" + ⏩ enqueue "B"
↓
⚙️ 生成A → 播A
B 在佇列等候
🛑 tts.cancel
A 生成停止
播完已緩衝音訊
↓
⚙️ B 自動接續
↓
✅ B done
🛑 tts.cancel_all
A 停止
B 從佇列移除
↓
🚫 B 取消不執行
↓
🔕 cancelled_all
⚠️ 兩者皆只停 Server 生成,已緩衝音訊仍播完。
立即靜音 → 點
🔇 清空並靜音
🔌 情境四:連線與斷線
○ 未連線(燈號滅)
↓
🔗 點擊「連線 WebSocket」
↓ server 回傳: session.created
● 已連線(燈號綠燈閃爍)
可送出 tts.start / tts.enqueue...
結束連線
🔌 手動點「斷線」
close(1000)
主動中止
⏱️ Idle 逾時
server 踢掉
onclose 觸發
↓
○ 未連線(燈號滅)
↓
🔗 重新連線
🔄 重置頁面
📝 輸入生成文字
台灣的棒壇在七十年代時這些光榮戰績的背後,卻潛藏著高度的危機。民國七十年代起,台灣棒運賴以為本的三級棒球日漸式微,「三冠王」的威風不再,學生棒球隊不論質或量皆急遽下跌;成棒隊戰功彪炳,但是國內甲組成棒賽觀眾卻寥寥可數,甲組成棒社會球隊陸續出走日本業餘隊及職棒隊,未來出路的問題困擾著棒球選手們;而一般人對棒球的印象則停留在「為國爭光」之上,對棒球運動的本質及技術層面的了解並不深,「冠軍」取向觀念普遍存在於民間,當「冠軍」不再稀奇時,對於棒球的喜愛也開始降溫。。
🗣️ Speaker
載入中...
🌐 Language
AUTO
zh
en
tw
hk
ja
jp
vi
ko
de
fr
th
es
pl
id
🧩 Model Config
載入中...
⚡ 語速
🔗 連線 WebSocket
🔌 斷線 WebSocket
未連線
🚀 送出生成 (tts.start)
⏩ 排隊送出 (tts.enqueue)
隊列中: 0
🛑 中斷當前 (tts.cancel)
🛑 清空全部 (tts.cancel_all)
🔇 強制靜音
🔄 全域重置
🗂️ Model Info
🗂️ 已載入模型資訊
↻ 重新載入
載入中...
系統就緒
-
首字接收時間 (ms)
0.0s
Buffer剩餘播放長度
🔊
主線語音消化中...
剩餘時長:0.0s