本教程是社区贡献,不受Open WebUI团队支持。它仅作为如何为您的特定用例自定义Open WebUI的演示。想要贡献?请查看贡献教程。
使用Docker将openedai-speech
集成到Open WebUI中
什么是openedai-speech
?
openedai-speech是一个OpenAI音频/语音API兼容的文本转语音服务器。
它提供/v1/audio/speech
端点,并提供免费、私有的文本转语音体验,具有自定义语音克隆功能。此服务与OpenAI无任何关联,不需要OpenAI API密钥。
要求
- 系统上安装的Docker
- 在Docker容器中运行的Open WebUI
- 对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
这将下载openedai-speech
仓库到您的本地机器,其中包括Docker Compose文件(docker-compose.yml
、docker-compose.min.yml
和docker-compose.rocm.yml
)和其他必要文件。
步骤3:将sample.env
文件重命名为speech.env
(根据需要自定义)
在openedai-speech
仓库文件夹中,创建一个名为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文件:
- docker-compose.yml:此文件使用
ghcr.io/matatonic/openedai-speech
镜像,并从Dockerfile构建。 - docker-compose.min.yml:此文件使用
ghcr.io/matatonic/openedai-speech-min
镜像,并从Dockerfile.min构建。 此镜像是仅包含Piper支持的最小版本,不需要GPU。 - docker-compose.rocm.yml:此文件使用
ghcr.io/matatonic/openedai-speech-rocm
镜像,并从Dockerfile构建,支持ROCm。
步骤4:构建选择的Docker镜像
在运行Docker Compose文件之前,您需要构建Docker镜像:
- Nvidia GPU(CUDA支持):
docker build -t ghcr.io/matatonic/openedai-speech .
- AMD GPU(ROCm支持):
docker build -f Dockerfile --build-arg USE_ROCM=1 -t ghcr.io/matatonic/openedai-speech-rocm .
- 仅CPU,无GPU(仅Piper):
docker build -f Dockerfile.min -t ghcr.io/matatonic/openedai-speech-min .
步骤5:运行正确的docker compose up -d
命令
- Nvidia GPU(CUDA支持):运行以下命令以分离模式启动
openedai-speech
服务:
docker compose up -d
- AMD GPU(ROCm支持):运行以下命令以分离模式启动
openedai-speech
服务:
docker compose -f docker-compose.rocm.yml up -d
- ARM64(Apple M系列,Raspberry Pi):XTTS在这里只有CPU支持,会很慢。您可以使用Nvidia镜像进行XTTS的CPU(慢)操作,或使用仅Piper镜像(推荐):
docker compose -f docker-compose.min.yml up -d
- 仅CPU,无GPU(仅Piper):对于仅支持Piper的最小docker镜像(< 1GB vs. 8GB):
docker compose -f docker-compose.min.yml up -d
这将以分离模式启动openedai-speech
服务。
选项2:使用Docker Run命令
您也可以使用以下Docker run命令以分离模式启动openedai-speech
服务:
- Nvidia GPU(CUDA):运行以下命令构建并启动
openedai-speech
服务:
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):运行以下命令构建并启动
openedai-speech
服务:
要启用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,无GPU(仅Piper):运行以下命令构建并启动
openedai-speech
服务:
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
进行TTS
打开Open WebUI设置并导航到管理面板 > 设置 > 音频下的TTS设置。添加以下配置:
- API基础URL:
http://host.docker.internal:8000/v1
- API密钥:
sk-111111111
(注意这是一个虚拟API密钥,因为openedai-speech
不需要API密钥。只要填写了此字段,您可以使用任何您喜欢的内容。)
步骤7:选择语音
在管理面板中相同音频设置菜单的TTS语音
下,您可以从以下openedai-speech
支持的选择中设置要使用的TTS模型
。这些模型的语音针对英语进行了优化。
tts-1
或tts-1-hd
:alloy
、echo
、echo-alt
、fable
、onyx
、nova
和shimmer
(tts-1-hd
是可配置的;默认使用OpenAI样本)
步骤8:按保存
应用更改并开始享受自然语音
按保存
按钮将更改应用到您的Open WebUI设置。刷新页面以使更改完全生效,并享受在Open WebUI中使用openedai-speech
集成,以自然声音的文本转语音朗读文本响应。
模型详情:
openedai-speech
支持多个文本转语音模型,每个都有其自身的优势和要求。以下模型可用:
- Piper TTS(非常快,在CPU上运行):通过
voice_to_speaker.yaml
配置文件使用您自己的Piper语音。此模型适用于需要低延迟和高性能的应用程序。Piper TTS还支持多语言语音。 - Coqui AI/TTS XTTS v2(快速,但需要约4GB GPU VRAM和具有CUDA的Nvidia GPU):此模型使用Coqui AI的XTTS v2语音克隆技术生成高质量语音。虽然需要更强大的GPU,但它提供了出色的性能和高质量音频。Coqui还支持多语言语音。
- Beta Parler-TTS支持(实验性,较慢):此模型使用Parler-TTS框架生成语音。虽然目前处于测试阶段,但它允许您描述说话者语音的非常基本特征。每次生成的确切语音会略有不同,但应该与提供的说话者描述相似。有关如何描述语音的灵感,请参见文本描述转语音。
故障排除
如果您在将openedai-speech
与Open WebUI集成时遇到任何问题,请按照以下故障排除步骤:
- 验证
openedai-speech
服务:确保openedai-speech
服务正在运行,并且您在docker-compose.yml文件中指定的端口已公开。 - 检查host.docker.internal访问:验证主机名
host.docker.internal
可以从Open WebUI容器内解析。这是必要的,因为openedai-speech
通过您PC上的localhost
公开,但open-webui
通常无法从其容器内访问它。您可以在docker-compose.yml
文件中添加卷,将文件从主机挂载到容器,例如,挂载到将由openedai-speech提供的目录。 - 检查API密钥配置:确保API密钥设置为虚拟值或有效地不选中,因为
openedai-speech
不需要API密钥。 - 检查语音配置:验证您尝试用于TTS的语音在您的
voice_to_speaker.yaml
文件中存在,并且相应的文件(例如,语音XML文件)存在于正确的目录中。 - 验证语音模型路径:如果您在语音模型加载方面遇到问题,请仔 细检查您的
voice_to_speaker.yaml
文件中的路径是否与语音模型的实际位置匹配。
其他故障排除提示
- 检查openedai-speech日志中可能指示问题所在的错误或警告。
- 验证
docker-compose.yml
文件是否针对您的环境正确配置。 - 如果您仍然遇到问题,请尝试重启
openedai-speech
服务或整个Docker环境。 - 如果问题持续存在,请咨询
openedai-speech
GitHub仓库或在相关社区论坛上寻求帮助。