我需要這個嗎?
「本機」有兩種含義:在瀏覽器中執行的 SSN 內建音色,或你自己執行的語音伺服器。
| 我想要… | 執行操作 |
|---|---|
| 不需要安裝的免費音色 | 使用 內建音色。大多數人做到這裡即可。 |
| 使用我已經執行的語音伺服器 | 連線伺服器. |
| 複製音色 | 參閱 音色複製. |
| OBS 中的 Fish Audio | 請參閱 Fish Audio 設定. |
| 付費雲端音色 | 請參閱 TTS 參考. |
內建音色(不需要安裝)
它們直接在瀏覽器的 SSN 中執行,不需要伺服器、Docker 或 API 金鑰。
| 音色 | 音質 | 電腦負載 | 連結參數值 |
|---|---|---|---|
| Kokoro | 出色 | 中等,GPU 更快。 | ttsprovider=kokoro |
| Piper | 很好 | 低,僅 CPU。 | ttsprovider=piper |
| Kitten | 良好 | 很低,僅 CPU。 | ttsprovider=kitten |
| eSpeak-NG | 機械感 | 極低,僅 CPU。 | ttsprovider=espeak |
四步設定
- 新增
&speech=en-US&ttsprovider=kokoro到您的dock.html連結。(或piper,kitten,espeak.) - 將該連結作為以下來源加入 OBS: 瀏覽器來源。聲音由該頁面產生。
- 在內容中開啟 透過 OBS 控制音訊.
- 傳送簡短測試聊天,例如
Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
連線自己的 TTS 伺服器
伺服器可提供更多音色、音色複製,或讓多個工具共用一種聲音。SSN 按以下介面與其通訊: 相容OpenAI 語音伺服器,不需要 API 金鑰。
- 啟動伺服器。 Kokoro-FastAPI 最簡單。
- 在 SSN 開啟 TTS 供應商清單並選擇 自訂/本機文字轉語音端點.
- 在 自訂 / 本機 API 端點,輸入伺服器位址,例如
http://127.0.0.1:8880/v1/audio/speech. - API 金鑰留空。
- 選擇伺服器認識的音色:
af_bella用於 Kokoro,nova用於 openedai-speech。 - 將連結複製到 OBS 並傳送測試聊天。
| 伺服器 | 模型 | GPU | 磁碟 | 連接埠 |
|---|---|---|---|---|
| Kokoro-FastAPI (建議) | Kokoro 82M | 選用 | ~2 GB | 8880 |
| openedai-speech (Piper) | Piper | 僅CPU | <1 GB | 8000 |
| kokoro-web | Kokoro 82M | 選用 | ~2 GB | 3000 |
這些需要 Docker Desktop 已安裝並執行,個人使用免費。
localhost 規則
這是最常見的錯誤。
localhost 和 127.0.0.1 始終表示「目前這台電腦」。 如果 OBS 與語音伺服器位於兩台電腦, 127.0.0.1 在 OBS 中指向 OBS 電腦。
| 您的設定 | 使用此位址 |
|---|---|
| OBS 和伺服器在同一台電腦 | http://127.0.0.1:8880/v1/audio/speech |
| 伺服器在家中另一台電腦 | http://192.168.x.x:8880/v1/audio/speech,改為該電腦的本機 IP |
| SSN 應用程式測試正常,OBS 無聲 | OBS 需要自己能存取的位址。應用程式測試成功不能證明 OBS 能存取伺服器。 |
還要確認防火牆允許該連接埠,且 Docker 已公開連接埠(-p 8880:8880).
Kokoro-FastAPI
Kokoro-FastAPI 將 Kokoro 作為本機伺服器執行。支援 CPU,不需要 GPU。
- 開啟終端機(命令提示字元、PowerShell 或 Terminal),執行以下一種:
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2
NVIDIA GPU(更快):
docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
首次執行下載約 1.5–2 GB,只需一次。 - 開啟
http://localhost:8880/web/。應出現可試聽音色的頁面(超過 67 種)。 - 使用此連結(伺服器在另一台電腦時修改位址):
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella
af_bella, af_sarah, am_adam 或 bf_emma。OpenAI 音色名稱,例如 nova 或 alloy 可能無效。隨 Docker 自動啟動:
docker run -d --restart unless-stopped -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2
openedai-speech(Piper 和 XTTS-v2)
方案 A:輕量 Piper 伺服器(CPU)
不到 1 GB,不支援音色複製。
docker run -d --restart unless-stopped -p 8000:8000 ghcr.io/matatonic/openedai-speech-min
音色: alloy, echo, fable, onyx, nova, shimmer.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=openai&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova
在 Windows 從原始碼執行(HTTP 500 錯誤)
加入其虛擬環境中的 Scripts 資料夾加到 PATH ,否則找不到 piper.exe 或 ffmpeg.exe.
cd openedai-speech $env:Path = "$PWD\.venv\Scripts;$env:Path" .\.venv\Scripts\python.exe speech.py --xtts_device none -H 127.0.0.1 -P 8000
方案 B:XTTS-v2 音色複製(GPU)
需要完整伺服器,而不是 openedai-speech-min。預計需要約 4 GB 顯示記憶體,CPU 也能執行但較慢。
四步設定 XTTS-v2
- 取得並啟動伺服器:
git clone https://github.com/matatonic/openedai-speech.git cd openedai-speech Copy-Item sample.env speech.env docker compose up -d
在macOS或Linux上使用cp sample.env speech.env。Docker 需要 GPU 存取權,模型首次使用時下載。 - 準備獲准使用的乾淨參考音訊:單聲道、22050 Hz、6–30 秒:
ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
- 在
config/voice_to_speaker.yaml,在現有的以下部分加入:tts-1-hd部分(保留已有音色):tts-1-hd: me: model: xtts speaker: voices/me.wav language: en變更me改為 SSN 將傳送的名稱。 - 執行
docker compose restart,然後使用:dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8000/v1/audio/speech&openaimodel=tts-1-hd&voiceopenai=me&openaiformat=wav
openaimodel=tts-1-hd 是必要的。 沒有它時 SSN 傳送 tts-1,伺服器會改用 Piper。 voiceopenai 必須與 YAML 檔案中的音色名稱一致。被瀏覽器攔截?執行 橋接 ,只更改 openaiendpoint 為 http://127.0.0.1:8124/v1/audio/speech.
本機 TTS 橋接
SSN 的小型輔助程式:接收 SSN 請求,轉交語音伺服器,再以瀏覽器可接受的方式傳回音訊。需要 Node.js。
http://127.0.0.1:8124/v1/audio/speech,即使語音伺服器在另一台電腦也是如此。
- 告訴橋接伺服器的位置。PowerShell:
$env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
伺服器在另一台電腦?使用其本機 IP,例如http://192.168.x.x:8880/v1/audio/speech. - 在 SSN 資料夾中執行
node scripts/local-tts-bridge.cjs。保持執行。 - 讓 SSN 指向橋接:
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=af_bella
macOS/Linux,一行命令: SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" node scripts/local-tts-bridge.cjs。在 local-tts-bridge 資料夾中, node server.cjs 效果相同。用以下參數更改連接埠: SSN_TTS_BRIDGE_PORT=8125。所有選項: 橋接服務README.
GPT-SoVITS 模式
GPT-SoVITS使用自己的 /tts 格式,由橋接轉換。
$env:SSN_TTS_REF_AUDIO_PATH="C:\voices\speaker.wav" $env:SSN_TTS_REF_TEXT="Reference audio transcript here." $env:SSN_TTS_TARGET="http://127.0.0.1:9880/tts" node scripts/local-tts-bridge.cjs --mode gptsovits
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&openaiformat=wav
F5-TTS 伺服器模式
部分 F5-TTS 包裝層使用 /synthesize_speech/?text=...&voice=...。橋接負責格式轉換。
$env:SSN_TTS_TARGET="http://127.0.0.1:7860/synthesize_speech/" node scripts/local-tts-bridge.cjs --mode f5
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=default_en&openaiformat=wav
聲音複製
複製不是 SSN 設定,而是部分語音伺服器的功能。SSN 傳送聊天文字,伺服器選擇複製音色。
- 錄製一位說話者的乾淨音訊,通常 3–30 秒,盡量減少背景雜音。
- 部分伺服器也需要音訊中說出的準確文字。
- 伺服器將音訊轉換成音色設定檔。
- SSN 透過以下方式傳送聊天文字:
ttsprovider=customtts. - 伺服器傳回音訊(通常 WAV 或 MP3),SSN 負責播放。
顯示記憶體不超過 6 GB 時,先從相容 OpenAI 伺服器上的小模型開始。大模型也可用,但可託管到別處。
| 選項 | 複製所需材料 | 6 GB GPU 夠用嗎? | 如何連線 |
|---|---|---|---|
| XTTS-v2 / openedai-speech | 簡短 WAV 音訊 | 可以,約 4 GB | 直連, /v1/audio/speech。專案已封存。 |
| chatterbox-tts-api / Chatterbox-TTS-Server | 參考音訊 | 使用 Turbo 或較小分段時很可能夠用 | 直連或橋接。GPU 比 CPU 更流暢,設定因分支而異。 |
| Qwen3-TTS (0.6B / 1.7B) | 3 秒音訊 | 很可能夠用(0.6B Base) | 需要相容 OpenAI 的包裝層。 |
| GPT-SoVITS | 5 秒,1 分鐘效果更好 | 使用 fp16 / 輕量安裝時很可能夠用 | 橋接 --mode gptsovits. |
| F5-TTS | 音訊及其逐字稿 | 可能 | 包裝層或橋接 --mode f5 帶有 F5-TTS_server. |
| MisoTTS 8B | 提示音訊 | 不夠,建議 24 GB | 僅遠端託管,儲存庫中沒有本機 REST 端點。 |
內建 Kokoro 和 Kokoro-FastAPI 不支援音色複製。
已透過 SSN 測試的內容
已使用以下兩種方式檢查: dock.html 和 featured.html:
- openedai-speech (Piper):已驗證 CPU 真實語音,含直連和橋接。
- Chatterbox-TTS-Server:已驗證 CPU 真實語音,使用
Emily.wav,包括直接連線和透過橋接連線。 - chatterbox-tts-api:已驗證請求格式,含直連和橋接。
- GPT-SoVITS 和 F5-TTS_server:僅透過橋接模式。
- F5-TTS官方專案 和 Qwen3-TTS:需要先加包裝層(僅提供 CLI、Gradio 或程式庫)。
需要什麼電腦?
這是粗略起點,不是保證。模型大小、文字長度和其他應用程式都會影響記憶體用量。
| 選項 | 最低配置 | 較舒適配置 |
|---|---|---|
| 系統文字轉語音/eSpeak | 任何電腦 | 任何電腦 |
| 內建Kitten | 低階CPU,4 GB記憶體 | 筆電 CPU,8 GB 記憶體 |
| 內建Piper | 現代 CPU,4–8 GB 記憶體 | 現代CPU,8 GB記憶體 |
| 內建Kokoro | 現代CPU,8 GB記憶體 | WebGPU GPU 或快速 CPU,8–16 GB 記憶體 |
| Kokoro-FastAPI | CPU,8 GB記憶體 | 選用 NVIDIA GPU,8–16 GB 記憶體 |
| openedai-speech Piper | CPU,4–8 GB 記憶體 | CPU,8 GB記憶體 |
| openedai-speech XTTS | NVIDIA GPU 約 4 GB,8–16 GB 記憶體 | 6 GB以上顯示記憶體的NVIDIA GPU,16 GB記憶體 |
| Chatterbox | 部分版本可用 CPU,較慢 | 6 GB以上顯示記憶體的NVIDIA GPU,16 GB記憶體 |
| GPT-SoVITS / F5-TTS / Qwen3-TTS | CPU 可測試,較慢 | 6 GB以上顯示記憶體的NVIDIA GPU,16 GB記憶體 |
| MisoTTS 8B | 6 GB 不夠 | 24 GB GPU 或遠端主機 |
將音訊送入 OBS
OBS 瀏覽器來源(建議)
適用於內建音色和自己的伺服器。
- 新增一個 瀏覽器來源 ,使用你的
dock.htmlTTS 連結。 - 開啟 透過 OBS 控制音訊.
- 點選 確定。TTS 現在會出現在 OBS 混音器中。
SSN 桌面應用程式
桌面應用程式使用相同連結設定,但聲音從應用程式而非 OBS 播放。使用以下方式擷取: 桌面音訊 或 音訊輸入擷取(Audio Input Capture)。要將 TTS 與其他聲音分開,請將應用程式輸出到虛擬音訊線: 音訊路由步驟.
更多桌面應用程式細節
應用程式視窗對瀏覽器權限(CORS)的限制比 Chrome 少。伺服器拒絕瀏覽器請求時,橋接仍是最穩妥的選擇。內建 Kokoro 可使用應用程式自身的 ninjafy.tts 路徑,而不在瀏覽器中載入模型。
&speech=en-US 且未指定供應商)取決於 OBS 中已有的音色。通常沒有,或無法產生可擷取的聲音。請改用上面的供應商。並排比較
| 選項 | 設定 | 品質 | 私人 | 可用於 OBS | 費用 |
|---|---|---|---|---|---|
| 內建Kokoro | 無 | 5/5 | 是 | 是 | 免費 |
| 內建Piper | 無 | 4/5 | 是 | 是 | 免費 |
| 內建Kitten | 無 | 3/5 | 是 | 是 | 免費 |
| 內建eSpeak | 無 | 2/5 | 是 | 是 | 免費 |
| Kokoro-FastAPI | Docker | 5/5 | 是 | 是 | 免費 |
| openedai-speech | Docker | 4/5 | 是 | 是 | 免費 |
| ElevenLabs | API 金鑰 | 5/5 | 否 | 是 | 付費方案 |
| 系統 TTS | 無 | 2/5 | 是 | 需要設定音訊路由 | 免費 |
解決問題
| 問題 | 試試這個 |
|---|---|
| 應用程式測試正常,OBS 無聲 | OBS 必須自行存取伺服器。伺服器在另一台電腦?替換 127.0.0.1 替換為本機 IP。檢查 透過 OBS 控制音訊。仍被攔截?在 OBS 電腦執行橋接。 |
| 只讀第一個字母或幾個單字 | 移除 ttsquick ,從 OBS 連結移除(例如 &ttsquick=14)並重新整理。測試時也移除 typewriter= 排除時序問題。 |
| 伺服器無回應 | 確認 Docker 和容器正在執行。在伺服器電腦開啟 http://127.0.0.1:8880/web/ (Kokoro-FastAPI 或你的伺服器連接埠)。在 OBS 電腦開啟 http://SERVER_LAN_IP:8880/web/。如果失敗,OBS 也無法存取,請檢查伺服器防火牆。 |
| 「Blocked by CORS」、「private network」或「failed fetch」 | 請求尚未到達伺服器就被瀏覽器攔截。執行 node scripts/local-tts-bridge.cjs 在 OBS 電腦上執行,並使用 http://127.0.0.1:8124/v1/audio/speech。託管的測試版 Dock 頁面更容易被攔截,橋接或本機應用程式視窗更方便。 |
| 音色不對或找不到音色 | Kokoro-FastAPI: af_bella, af_sarah, am_adam,或其網頁中的音色。openedai-speech: nova, echo, alloy。部分伺服器區分大小寫。 |
| 能播放但 OBS 擷取不到 | 開啟 透過 OBS 控制音訊。測試時觀察 OBS 混音器音量表,確保已設定 &ttsprovider=;系統 TTS 可能需要桌面音訊或虛擬音訊線。 |
| 找不到Docker映像檔 | 映像標籤會變化,請在以下位置查看目前標籤: Kokoro-FastAPI 或 openedai-speech. |
面向伺服器開發者
SSN 與自訂伺服器的通訊方式。僅在建置或偵錯伺服器時需要閱讀。
chat text -> SSN -> your endpoint (or the bridge) -> TTS server -> audio -> SSN plays it
SSN 傳送什麼
帶有 ttsprovider=customtts, localtts 或 openai,SSN 傳送 JSON POST:
POST /v1/audio/speech
{
"model": "tts-1",
"input": "Chat message text",
"voice": "af_bella",
"response_format": "mp3",
"speed": 1.0
}
未設定 API 金鑰時,SSN 不傳送 Authorization 標頭。
SSN 能播放什麼
| 回應 | 是否可用? | 說明 |
|---|---|---|
| 音訊檔案 | 是 | 最佳。 audio/mpeg, audio/wav, audio/ogg, audio/aac,或瀏覽器可播放的任何格式。 |
| 包含音訊 URL 的 JSON | 是 | 檢查 url, audio_url, output_url, data.url,以及第一個 data[] 項目。 |
| 包含base64音訊的JSON | 是 | 檢查 audio, audio_data, audioContent, b64_json、巢狀的 data 欄位,以及資料URL。 |
| 原始PCM | 僅在有封裝時 | 以 WAV 檔案或 base64 WAV 傳送。 |
格式: mp3 體積小且廣泛支援。 wav 適合複製伺服器和橋接測試。使用 opus 僅在伺服器和瀏覽器均支援時使用。
暫不支援串流播放。 SSN 等待完整回應後再播放,請保持聊天訊息簡短。
自己的伺服器連結設定
| 設定 | 範例 | 功能 |
|---|---|---|
ttsprovider | customtts | 使用自己的伺服器。(openai 也可用。) |
openaiendpoint | http://localhost:8880/v1/audio/speech | 伺服器位址,連接埠需與伺服器一致。 |
speech | en-US | 開啟英語 TTS。 |
voiceopenai | af_bella | 音色名稱,取決於伺服器。 |
openaimodel | tts-1-hd | 模型名稱。預設 tts-1. |
openaiformat | mp3 | mp3、wav、opus 或 flac。 |
openaispeed | 1.0 | 語速(0.5–2.0)。 |
也接受: customttsendpoint, localttsendpoint, customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, localttsformat。朗讀選項,例如 simpletts, skipmessages 和 ttsquick 適用於所有供應商: 所有連結設定.
範例連結:
Kokoro-FastAPI: dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8880/v1/audio/speech&voiceopenai=af_bella&openaispeed=1.1 openedai-speech: dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova kokoro-web: dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:3000/api/v1/audio/speech&voiceopenai=af_bella