跳轉至

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 的工具,例如 litellmopenai 官方 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-XiaoxiaoNeuralen-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,亦可依賴實作支援 opusaacflac

相關鏈接

來源

自動生成(2026-08-19 容器覆蓋率補完第二批)