跳到主要内容

使用 Docker 部署 Kokoro-FastAPI

注意

本教程为社区贡献,不属于 Open WebUI 官方支持内容。它仅作为如何针对特定用例定制 Open WebUI 的演示。想要参与贡献?请查看贡献教程。

什么是 Kokoro-FastAPI?

Kokoro-FastAPI 是一个基于 Docker 容器化的 FastAPI 封装器,专为 Kokoro-82M 文本转语音 (TTS) 模型设计,并实现了 OpenAI API 端点规范。它提供高性能的文本转语音服务,具有令人惊叹的生成速度。

核心特性

  • 兼容 OpenAI 的 Speech 端点,支持在线多音色融合
  • NVIDIA GPU 加速推理或 CPU ONNX 推理
  • 支持可变分片的流式传输
  • 支持多种音频格式(.mp3, .wav, .opus, .flac, .aac, .pcm
  • localhost:8880/web 集成了 Web 界面(仓库中另提供 Gradio 容器)
  • 提供转换和生成的音素(Phoneme)端点

音色

  • af
  • af_bella
  • af_irulan
  • af_nicole
  • af_sarah
  • af_sky
  • am_adam
  • am_michael
  • am_gurney
  • bf_emma
  • bf_isabella
  • bm_george
  • bm_lewis

语言

  • en_us
  • en_uk

要求

  • 系统中已安装 Docker
  • Open WebUI 正在运行
  • 对于 GPU 支持:支持 CUDA 12.3 的 NVIDIA GPU
  • 对于纯 CPU:无特殊硬件要求

⚡️ 快速开始

您可以选择 GPU 或 CPU 版本

GPU 版本(需要支持 CUDA 12.8 的 NVIDIA GPU)

使用 docker run 运行:

docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu

或者使用 docker compose,创建一个 docker-compose.yml 文件并运行 docker compose up。例如:

name: kokoro
services:
    kokoro-fastapi-gpu:
        ports:
            - 8880:8880
        image: ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.1
        restart: always
        deploy:
            resources:
                reservations:
                    devices:
                        - driver: nvidia
                          count: all
                          capabilities:
                              - gpu
信息

您可能需要安装并配置 NVIDIA Container Toolkit

CPU 版本(ONNX 优化推理)

使用 docker run 运行:

docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu

使用 docker compose 运行:

name: kokoro
services:
    kokoro-fastapi-cpu:
        ports:
            - 8880:8880
        image: ghcr.io/remsky/kokoro-fastapi-cpu
        restart: always

设置 Open WebUI 以使用 Kokoro-FastAPI

若要在 Open WebUI 中使用 Kokoro-FastAPI,请按照以下步骤操作:

  • 打开管理员面板 (Admin Panel),转到 设置 -> 音频 (Settings -> Audio)
  • 将您的 TTS 设置配置如下:
    • 文本转语音引擎 (Text-to-Speech Engine): OpenAI
    • API Base URL: http://localhost:8880/v1 # 您可能需要使用 host.docker.internal 代替 localhost
    • API Key: not-needed
    • TTS 音色 (TTS Voice): af_bella # 为了兼容性,也接受现有 OAI 音色的映射
    • TTS 模型 (TTS Model): kokoro
信息

默认的 API Key 为字符串 not-needed。如果您不需要额外的安全性,无需更改此值。

构建 Docker 容器

git clone https://github.com/remsky/Kokoro-FastAPI.git
cd Kokoro-FastAPI
cd docker/cpu # 或 docker/gpu
docker compose up --build

就这么简单!

有关构建 Docker 容器(包括更改端口)的更多信息,请参考 Kokoro-FastAPI 仓库。

故障排除

未检测到 NVIDIA GPU

如果 GPU 版本没有使用您的 GPU 进行推理:

  1. 安装 NVIDIA Container Toolkit

    # Ubuntu/Debian
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
    sudo systemctl restart docker
  2. 验证 GPU 访问权限

    docker run --rm --gpus all nvidia/cuda:12.2.0-base nvidia-smi

来自 Open WebUI 的连接问题

如果 Open WebUI 无法连接到 Kokoro,这通常是 Docker 的网络问题。请根据您的设置选择相匹配的方法:

选项 1 — Docker Desktop (Windows/Mac)

使用 host.docker.internal 代替 localhosthttp://host.docker.internal:8880/v1

选项 2 — Docker Compose (相同网络)

直接使用服务名称:http://kokoro-fastapi-gpu:8880/v1

选项 3 — Docker 网络(Linux 推荐)

如果 host.docker.internal 无法工作,创建一个共享的 Docker 网络:

# 创建 Docker 网络
docker network create local-llm

# 将两个容器都连接到该网络
docker network connect local-llm open-webui
docker network connect local-llm kokoro-fastapi

# 重启这两个容器
docker restart open-webui kokoro-fastapi

Then,将您的 API Base URL 设置为 http://kokoro-fastapi:8880/v1

  • 验证服务是否正常运行:curl http://localhost:8880/health
This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.