Edge TTS Bridge¶
Edge TTS Bridge 是一個輕量級服務,將 Microsoft Edge 內建的文字轉語音(TTS)引擎封裝為 OpenAI 兼容的語音 API。透過本橋接器,任何支援 OpenAI audio/speech 端點的應用程式,皆可無縫使用 Edge TTS 的自然語音,包括香港中文語音 zh-HK-HiuGaaiNeural。此方案特別適合需要在私有雲環境中提供低成本、高品質語音合成的場景,免去訂閱商用雲端 TTS 服務的費用。
概述¶
微軟 Edge 瀏覽器所使用的 TTS 服務本身並無正式公開付費 API,但其實際端點可被第三方使用。Edge TTS Bridge 即作為中間層,接收 OpenAI 格式的請求(例如 POST /v1/audio/speech),轉換為 Microsoft 的合成請求,再串流傳回音訊。這樣開發者便可沿用 OpenAI SDK 或現有語音整合,直接切換至 Edge TTS 而毋須修改業務邏輯。
本機實況中,服務以 Docker Compose 部署,使用自訂鏡像 edge-tts-bridge:latest,容器名為 edge-tts-bridge,並固定配置於 cf_network 網絡的靜態 IP 172.21.0.76。該網絡為外部預先建立,用於配合 Cloudflare Tunnel 或其他內部服務互相訪問。
架構¶
典型架構如圖所示:
客戶端應用程式 (OpenAI SDK)
│
▼
Edge TTS Bridge 容器 (172.21.0.76)
│
▼
Microsoft Edge TTS 端點
- 客戶端:任何支援 OpenAI 語音 API 的工具,例如 litellm、openai 官方 SDK、自動化腳本等。
- Edge TTS Bridge:容器內執行 FastAPI 或類似框架,提供 RESTful 端點。它驗證請求(可選 API 金鑰)、對應語音參數、呼叫 Edge TTS 並緩衝/串流 MP3 音訊。
- 網絡:容器加入
cf_network(Docker external network),取得172.21.0.76。此網絡通常是 Cloudflare Tunnel 的對外橋樑,確保語音 API 可在內網或被安全隧道公開。
部署¶
部署此橋接器最直接的方法是使用 Docker Compose。在目標主機上確保已建立外部網絡 cf_network:
docker network create cf_network
然後放置上述 Compose 檔案(節選),執行:
docker compose up -d
建置鏡像時,會從本地 build: . 取得 Dockerfile,產生 edge-tts-bridge:latest。容器設定 restart: unless-stopped,因此系統重啟後會自動恢復。
若需對外公開,通常配合 cloudflare-tunnel,將網域名稱指向容器的 IP 及實際監聽連接埠(需參考 Dockerfile 中的 EXPOSE 指令;Compose 未列出 ports,表示服務可能不需要直接映射到主機,僅供網絡內訪問)。
配置¶
主要環境變數如下:
TZ=Asia/Hong_Kong:設定容器時區,確保日誌時間戳與排程行為符合香港時間。EDGE_TTS_VOICE=zh-HK-HiuGaaiNeural:預設語音。此為近年微軟提供的高品質廣東話女聲,亦支援其他地區如zh-CN-XiaoxiaoNeural、en-US-JennyNeural。客戶端請求若未指定語音,則使用此預設值。
其他常見配置(未在節選中列出)可能包括:
EDGE_TTS_API_KEY:若啟用,所有請求須帶上Authorization: Bearer <key>。EDGE_TTS_RATE:調整語速(如+10%)。EDGE_TTS_PITCH:調整音調。
若要修改語音,可在環境變數中更改,或於 API 請求的 voice 欄位指定其他支援名稱。
維運與監控¶
日常維運可透過 Docker 指令進行:
- 查看即時日誌:
docker logs -f edge-tts-bridge - 測試健康狀態:
curl http://172.21.0.76:<內部連接埠>/health(需在相同網絡內) - 檢查容器狀態:
docker ps --filter name=edge-tts-bridge
由於容器已加入 cf_network,可使用 docker inspect edge-tts-bridge 確認 IP 分配無誤。建議在監控系統中加入定期合成測試,確保語音端點回應時間正常。資源使用方面,Edge TTS Bridge 一般只需少量記憶體(<100MB),CPU 負載亦低。
常見問題¶
問:為何無法從主機直接訪問 172.21.0.76?
因為該 IP 屬於 Docker 自訂網絡,主機若不在 cf_network,便無法直接路由。需透過同網絡內其他容器或使用 docker exec 執行 curl。
問:如何將語音請求轉發給此服務?
在 OpenAI SDK 中設定 base_url="http://172.21.0.76:<內部連接埠>/v1",API 金鑰則隨意(若未啟用驗證)。
問:Edge TTS 服務是否會封鎖?
由於微軟未有官方 SLA,此橋接器僅適合低流量內部應用。若須生產級服務,建議採用 Azure Speech Service。
問:支援哪些音訊格式?
預設為 MP3,亦可依賴實作支援 opus、aac 或 flac。
相關鏈接¶
- docker
- litellm
- cloudflare-tunnel
- openai
- 文字轉語音
- Azure Speech Service
- docker-compose
來源¶
自動生成(2026-08-19 容器覆蓋率補完第二批)