本地 AI TTS 指南

在自己的电脑运行聊天语音。大多数主播只需内置音色。

我需要这个吗?

“本地”有两种含义:在浏览器中运行的 SSN 内置音色,或你自己运行的语音服务器。

我想要…执行操作
无需安装的免费音色使用 内置音色。大多数人做到这里即可。
使用我已经运行的语音服务器连接服务器.
克隆音色参阅 音色克隆.
OBS 中的 Fish Audio请参阅 Fish Audio 设置.
付费云端音色请参阅 TTS 参考.
适用于 SSN 采集的所有聊天。音色属于 SSN 播放器,而非 YouTube 或 Twitch。与 系统 TTS不同,本地 AI 音色自行生成音频,因此 OBS 可以采集。 比较提供商并试听示例.

内置音色(无需安装)

它们直接在浏览器的 SSN 中运行,无需服务器、Docker 或 API 密钥。

音色音质电脑负载链接参数值
Kokoro出色中等,GPU 更快。ttsprovider=kokoro
Piper很好低,仅 CPU。ttsprovider=piper
Kitten良好很低,仅 CPU。ttsprovider=kitten
eSpeak-NG机械感极低,仅 CPU。ttsprovider=espeak

四步设置

  1. 添加 &speech=en-US&ttsprovider=kokoro 到您的 dock.html 链接。(或 piper, kitten, espeak.)
  2. 将该链接作为以下来源加入 OBS: 浏览器来源。声音由该页面产生。
  3. 在属性中开启 通过 OBS 控制音频.
  4. 发送简短测试聊天,例如 Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
首次使用较慢。 Kokoro 和 Piper 首先下载模型(约 50–200 MB),以后会复用,但启动仍需片刻。OBS 单独保存,不与 Chrome 共用。

音色、速度和其他语言: 提供商设置。更喜欢点击操作?使用 设置指南.

连接自己的 TTS 服务器

服务器可提供更多音色、音色克隆,或让多个工具共用一种声音。SSN 按以下接口与其通信: 兼容OpenAI 语音服务器,无需 API 密钥。

  1. 启动服务器。 Kokoro-FastAPI 最简单。
  2. 在 SSN 打开 TTS 提供商列表并选择 自定义/本地文字转语音端点.
  3. 在 自定义 / 本地 API 端点,输入服务器地址,例如 http://127.0.0.1:8880/v1/audio/speech.
  4. API 密钥留空。
  5. 选择服务器认识的音色: af_bella 用于 Kokoro, nova 用于 openedai-speech。
  6. 将链接复制到 OBS 并发送测试聊天。
截图式Social Stream Ninja本地文字转语音字段说明
关键字段是端点。
OBS 在另一台电脑? 阅读 localhost 规则 。 被浏览器拦截? 使用 桥接.
服务器模型GPU磁盘端口
Kokoro-FastAPI (推荐)Kokoro 82M可选~2 GB8880
openedai-speech (Piper)Piper仅CPU<1 GB8000
kokoro-webKokoro 82M可选~2 GB3000

这些需要 Docker Desktop 已安装并运行,个人使用免费。

localhost 规则

这是最常见的错误。

localhost 和 127.0.0.1 始终表示“当前这台电脑”。 如果 OBS 与语音服务器位于两台电脑, 127.0.0.1 在 OBS 中指向 OBS 电脑。
示意图:localhost指同一台电脑,访问另一台电脑需要局域网IP地址
您的配置使用此地址
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。

  1. 打开终端(命令提示符、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,只需一次。
  2. 打开 http://localhost:8880/web/。应出现可试听音色的页面(超过 67 种)。
  3. 使用此链接(服务器在另一台电脑时修改地址):
    dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella
使用 Kokoro 音色名称,例如 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)

已归档项目。 openedai-speech 于 2026 年 1 月归档,自称大体已过时。仍可作为示例使用,但不再更新。请仅在本地使用;它没有登录验证,绝不要将端口暴露到互联网。

方案 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
  1. 获取并启动服务器:
    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 访问权限,模型首次使用时下载。
  2. 准备获准使用的干净参考音频:单声道、22050 Hz、6–30 秒:
    ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
  3. 在 config/voice_to_speaker.yaml,在现有的以下部分添加: tts-1-hd 部分(保留已有音色):
    tts-1-hd:
      me:
        model: xtts
        speaker: voices/me.wav
        language: en
    更改 me 改为 SSN 将发送的名称。
  4. 运行 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。

最简单的规则: 在 OBS 电脑上运行桥接,这样 OBS 始终使用 http://127.0.0.1:8124/v1/audio/speech,即使语音服务器在另一台电脑也是如此。
示意图:OBS调用本地桥接服务,再由桥接服务调用文字转语音服务器
  1. 告诉桥接服务器的位置。PowerShell:
    $env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
    服务器在另一台电脑?使用其本地 IP,例如 http://192.168.x.x:8880/v1/audio/speech.
  2. 在 SSN 文件夹中运行 node scripts/local-tts-bridge.cjs。保持运行。
  3. 让 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 发送聊天文字,服务器选择克隆音色。

  1. 录制一位说话者的干净音频,通常 3–30 秒,尽量减少背景噪声。
  2. 部分服务器也需要音频中说出的准确文字。
  3. 服务器将音频转换成音色配置。
  4. SSN 通过以下方式发送聊天文字: ttsprovider=customtts.
  5. 服务器返回音频(通常 WAV 或 MP3),SSN 负责播放。
只克隆自己拥有或获准使用的声音。
XTTS-v2默认仅供非商业使用。 它的 Coqui Public Model License 仅允许非商业用途。变现直播可能不符合条件,请先检查许可证或获得许可。

显存不超过 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-SoVITS5 秒,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-FastAPICPU,8 GB内存可选 NVIDIA GPU,8–16 GB 内存
openedai-speech PiperCPU,4–8 GB 内存CPU,8 GB内存
openedai-speech XTTSNVIDIA 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-TTSCPU 可测试,较慢6 GB以上显存的NVIDIA GPU,16 GB内存
MisoTTS 8B6 GB 不够24 GB GPU 或远程主机

将音频送入 OBS

OBS 浏览器源(推荐)

适用于内置音色和自己的服务器。

  1. 添加一个 浏览器来源 ,使用你的 dock.html TTS 链接。
  2. 开启 通过 OBS 控制音频.
  3. 点击 确定。TTS 现在会出现在 OBS 混音器中。

SSN 桌面应用

桌面应用使用相同链接设置,但声音从应用而非 OBS 播放。使用以下方式采集: 桌面音频 或 音频输入捕获(Audio Input Capture)。要将 TTS 与其他声音分开,请将应用输出到虚拟音频线: 音频路由步骤.

不要把应用测试与 OBS 混为一谈。 在应用中点 Test 是从应用发起测试。链接放入 OBS 后,必须由 OBS 访问服务器并播放音频。
更多桌面应用细节

应用窗口对浏览器权限(CORS)的限制比 Chrome 少。服务器拒绝浏览器请求时,桥接仍是最稳妥的选择。内置 Kokoro 可使用应用自身的 ninjafy.tts 路径,而不在浏览器中加载模型。

系统 TTS (&speech=en-US 且未指定提供商)取决于 OBS 中已有的音色。通常没有,或无法产生可采集的声音。请改用上面的提供商。

并排比较

选项设置质量私人可用于 OBS费用
内置Kokoro无5/5是是免费
内置Piper无4/5是是免费
内置Kitten无3/5是是免费
内置eSpeak无2/5是是免费
Kokoro-FastAPIDocker5/5是是免费
openedai-speechDocker4/5是是免费
ElevenLabsAPI 密钥5/5否是付费方案
系统 TTS无2/5是需要设置音频路由免费

解决问题

截图式本地文字转语音故障排除清单
有的地方可用,有的不可用?按顺序检查:电脑、地址、音色、浏览器权限、OBS 音频。
问题试试这个
应用测试正常,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 等待完整响应后再播放,请保持聊天消息简短。

自己的服务器链接设置
设置示例功能
ttsprovidercustomtts使用自己的服务器。(openai 也可用。)
openaiendpointhttp://localhost:8880/v1/audio/speech服务器地址,端口需与服务器一致。
speechen-US开启英语 TTS。
voiceopenaiaf_bella音色名称,取决于服务器。
openaimodeltts-1-hd模型名称。默认 tts-1.
openaiformatmp3mp3、wav、opus 或 flac。
openaispeed1.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