使用 Docker 部署 Openedai-speech
本教程为社区贡献,不属于 Open WebUI 官方支持。它仅作为如何针对特定用例自定义 Open WebUI 的演示。想要贡献?请查看贡献教程。
使用 Docker 将 openedai-speech 集成到 Open WebUI
什么是 openedai-speech?
openedai-speech 是一个兼容 OpenAI 音频/语音 API 的文本转语音 (TTS) 服务器。
它提供 /v1/audio/speech 端点,并支持自定义声音克隆功能,为您提供免费且私密的文本转语音体验。此服务与 OpenAI 没有任何关联,也不需要 OpenAI API 密钥。
环境要求
- 系统已安装 Docker
- Open WebUI 运行在 Docker 容器中
- 对 Docker 和 Docker Compose 有基本了解
选项 1:使用 Docker Compose
第 1 步:为 openedai-speech 服务创建新文件夹
创建一个新文件夹(例如 openedai-speech-service),用于存放 docker-compose.yml 和 speech.env 文件。
第 2 步:从 GitHub 克隆 openedai-speech 仓库
git clone https://github.com/matatonic/openedai-speech.git
这将下载仓库到本地,其中包括 Docker Compose 文件(docker-compose.yml、docker-compose.min.yml 和 docker-compose.rocm.yml)及其他必要文件。
第 3 步:将 sample.env 重命名为 speech.env(根据需要自定义)
在仓库文件夹中,创建一个名为 speech.env 的文件,内容如下:
TTS_HOME=voices
HF_HOME=voices
#PRELOAD_MODEL=xtts
#PRELOAD_MODEL=xtts_v2.0.2
#PRELOAD_MODEL=parler-tts/parler_tts_mini_v0.1
#EXTRA_ARGS=--log-level DEBUG --unload-timer 300
#USE_ROCM=1
第 4 步:选择 Docker Compose 文件
您可以使用以下任何一个文件:
- docker-compose.yml:使用
ghcr.io/matatonic/openedai-speech镜像并根据 Dockerfile 构建。 - docker-compose.min.yml:使用
ghcr.io/matatonic/openedai-speech-min镜像。这是一个精简版镜像,仅包含 Piper 支持,不需要 GPU。 - docker-compose.rocm.yml:支持 ROCm(AMD GPU)。
第 5 步:构建并运行
在运行 Docker Compose 之前,您需要构建镜像:
- Nvidia GPU (CUDA 支持):
docker build -t ghcr.io/matatonic/openedai-speech .
docker compose up -d
- AMD GPU (ROCm 支持):
docker build -f Dockerfile --build-arg USE_ROCM=1 -t ghcr.io/matatonic/openedai-speech-rocm .
docker compose -f docker-compose.rocm.yml up -d
- ARM64 (Apple M 系列, Raspberry Pi) 或 仅 CPU:推荐使用 Piper 精简版:
docker build -f Dockerfile.min -t ghcr.io/matatonic/openedai-speech-min .
docker compose -f docker-compose.min.yml up -d
选项 2:使用 Docker Run 命令
您也可以直接使用 docker run 启动服务:
- Nvidia GPU (CUDA):
docker build -t ghcr.io/matatonic/openedai-speech .
docker run -d --gpus=all -p 8000:8000 -v voices:/app/voices -v config:/app/config --name openedai-speech ghcr.io/matatonic/openedai-speech
- ROCm (AMD GPU):
要启用 ROCm 支持,请取消
speech.env中#USE_ROCM=1的注释。
docker build -f Dockerfile --build-arg USE_ROCM=1 -t ghcr.io/matatonic/openedai-speech-rocm .
docker run -d --privileged --init --name openedai-speech -p 8000:8000 -v voices:/app/voices -v config:/app/config ghcr.io/matatonic/openedai-speech-rocm
- 仅 CPU (仅 Piper):
docker build -f Dockerfile.min -t ghcr.io/matatonic/openedai-speech-min .
docker run -d -p 8000:8000 -v voices:/app/voices -v config:/app/config --name openedai-speech ghcr.io/matatonic/openedai-speech-min
第 6 步:配置 Open WebUI 使用 openedai-speech
进入 Open WebUI 的 管理员面板 > 设置 > 音频,添加以下配置:
- API 基础 URL:
http://host.docker.internal:8000/v1 - API 密钥:
sk-111111111(这是一个虚拟密钥,因为该服务不需要密钥,但 必须填写。)
第 7 步:选择声音
在同一设置菜单下,您可以从 openedai-speech 支持的模型中选择 TTS 声音。这些模型的声音针对英语进行了优化。
tts-1或tts-1-hd:alloy,echo,echo-alt,fable,onyx,nova, 和shimmer
第 8 步:保存并享用
点击 保存 按钮应用设置。刷新页面后,您就可以在 Open WebUI 中使用自然的 AI 语音朗读回复了。
模型详情
openedai-speech 支持多种 TTS 模型:
- Piper TTS(极速,运行于 CPU):通过
voice_to_speaker.yaml配置文件使用 Piper 声音。适用于低延迟需求,支持多语言。 - Coqui AI/TTS XTTS v2(快速,需要约 4GB 显存):采用 XTTS v2 声音克隆技术,音质极佳,支持多语言。
- Beta Parler-TTS 支持(实验性,较慢):允许通过文本描述声音特征。
故障排除
如果遇到集成问题,请尝试:
- 验证服务状态:确保服务正在运行且端口已暴露。
- 检查 host.docker.internal:确保容器内可以解析此主机名。
- 检查 API 密钥:确保已填写虚拟密钥。
- 验证声音配置:确保
voice_to_speaker.yaml中定义的声音及其文件路径正确。
常见问题
如何控制语音的情感范围? 目前没有直接机制。大写字母或语法可能会产生影响,但结果不一。
声音文件和配置文件存储在哪里?
存储在 config 卷中。默认声音在 voice_to_speaker.default.yaml 中定义。
其他资源
您可以更改 docker-compose.yml 中的端口号,但请务必相应更新 Open WebUI 中的 API 基础 URL。