Qwen3-TTS WebUI

⚠️ 注意: 本项目由大量 AI 生成,目前处于不稳定状态。稳定版将在 Releases 中发布。

非官方 基于 Qwen3-TTS 的文本转语音 Web 应用,支持自定义语音、语音设计和语音克隆,提供直观的 Web 界面。

这是一个非官方项目。如需查看官方 Qwen3-TTS 仓库,请访问 QwenLM/Qwen3-TTS

English Documentation

功能特性

  • 自定义语音:预定义说话人语音
  • 语音设计:自然语言描述创建语音
  • 语音克隆:上传音频克隆语音
  • IndexTTS2:高质量语音克隆,支持情感控制(高兴、愤怒、悲伤、恐惧、惊讶等),由 IndexTTS2 驱动
  • 有声书生成:上传 EPUB 文件,通过 LLM 自动提取角色并分配语音,生成多角色有声书;支持为每个角色单独启用 IndexTTS2
  • 双后端支持:支持本地模型和阿里云 TTS API 切换
  • 多语言支持English、简体中文、繁體中文、日本語、한국어
  • JWT 认证、异步任务、语音缓存、暗黑模式

界面预览

桌面端 - 亮色模式

亮色模式

桌面端 - 暗黑模式

暗黑模式

移动端

移动端亮色模式 移动端设置

有声书生成

有声书概览

有声书角色列表 有声书章节列表

技术栈

后端: FastAPI + SQLAlchemy + PyTorch + JWT

  • 使用 PyTorch 直接推理 Qwen3-TTS 模型
  • 异步任务处理与批量优化
  • 支持本地模型 + 阿里云 API 双后端

前端: React 19 + TypeScript + Vite + Tailwind + Shadcn/ui

Docker 部署

预构建镜像已发布至 Docker Hubbdim404/qwen3-tts-backendbdim404/qwen3-tts-frontend

前置要求Docker、Docker Compose、NVIDIA GPU + NVIDIA Container Toolkit

git clone https://github.com/bdim404/Qwen3-TTS-WebUI.git
cd Qwen3-TTS-webUI

# 下载模型到 docker/models/(参见下方"安装部署 > 下载模型"
mkdir -p docker/models docker/data

# 配置
cp docker/.env.example docker/.env
# 编辑 docker/.env设置 SECRET_KEY

cd docker

# 拉取预构建镜像
docker compose pull

# 启动(仅 CPU
docker compose up -d

# 启动GPU 加速)
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d

访问 http://localhost,默认账号:admin / admin123456

安装部署

环境要求

  • Python 3.9+ 并支持 CUDA用于本地模型推理
  • Node.js 18+(用于前端)
  • Git

1. 克隆仓库

git clone https://github.com/bdim404/Qwen3-TTS-WebUI.git
cd Qwen3-TTS-webUI

2. 下载模型

重要: 模型不会自动下载,需要手动下载。

详细信息请访问官方仓库:Qwen3-TTS 模型

进入模型目录:

# Docker 部署
mkdir -p docker/models && cd docker/models

# 本地部署
cd qwen3-tts-backend && mkdir -p Qwen && cd Qwen

方式一:通过 ModelScope 下载(推荐中国大陆用户)

pip install -U modelscope

modelscope download --model Qwen/Qwen3-TTS-Tokenizer-12Hz --local_dir ./Qwen3-TTS-Tokenizer-12Hz
modelscope download --model Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --local_dir ./Qwen3-TTS-12Hz-1.7B-CustomVoice
modelscope download --model Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign --local_dir ./Qwen3-TTS-12Hz-1.7B-VoiceDesign
modelscope download --model Qwen/Qwen3-TTS-12Hz-1.7B-Base --local_dir ./Qwen3-TTS-12Hz-1.7B-Base

可选的 0.6B 模型(更小、更快):

modelscope download --model Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice --local_dir ./Qwen3-TTS-12Hz-0.6B-CustomVoice
modelscope download --model Qwen/Qwen3-TTS-12Hz-0.6B-Base --local_dir ./Qwen3-TTS-12Hz-0.6B-Base

方式二:通过 Hugging Face 下载

pip install -U "huggingface_hub[cli]"

hf download Qwen/Qwen3-TTS-Tokenizer-12Hz --local-dir ./Qwen3-TTS-Tokenizer-12Hz
hf download Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --local-dir ./Qwen3-TTS-12Hz-1.7B-CustomVoice
hf download Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign --local-dir ./Qwen3-TTS-12Hz-1.7B-VoiceDesign
hf download Qwen/Qwen3-TTS-12Hz-1.7B-Base --local-dir ./Qwen3-TTS-12Hz-1.7B-Base

可选的 0.6B 模型(更小、更快):

hf download Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice --local-dir ./Qwen3-TTS-12Hz-0.6B-CustomVoice
hf download Qwen/Qwen3-TTS-12Hz-0.6B-Base --local-dir ./Qwen3-TTS-12Hz-0.6B-Base

IndexTTS2 模型(可选,用于情感控制语音克隆)

IndexTTS2 是可选功能。如需使用,在同一 Qwen/ 目录下运行:

# 仅下载所需文件,无需下载完整仓库
hf download IndexTeam/IndexTTS-2 \
  bpe.model config.yaml feat1.pt feat2.pt gpt.pth s2mel.pth wav2vec2bert_stats.pt \
  --local-dir ./IndexTTS2

然后安装 indextts 包:

git clone https://github.com/iszhanjiawei/indexTTS2.git
cd indexTTS2
pip install -e . --no-deps
cd ..

最终目录结构:

Docker 部署(docker/models/

Qwen3-TTS-webUI/
└── docker/
    └── models/
        ├── Qwen3-TTS-Tokenizer-12Hz/
        ├── Qwen3-TTS-12Hz-1.7B-CustomVoice/
        ├── Qwen3-TTS-12Hz-1.7B-VoiceDesign/
        └── Qwen3-TTS-12Hz-1.7B-Base/

本地部署(qwen3-tts-backend/Qwen/

Qwen3-TTS-webUI/
└── qwen3-tts-backend/
    └── Qwen/
        ├── Qwen3-TTS-Tokenizer-12Hz/
        ├── Qwen3-TTS-12Hz-1.7B-CustomVoice/
        ├── Qwen3-TTS-12Hz-1.7B-VoiceDesign/
        ├── Qwen3-TTS-12Hz-1.7B-Base/
        └── IndexTTS2/          ← 可选,用于 IndexTTS2 功能
            ├── bpe.model
            ├── config.yaml
            ├── feat1.pt
            ├── feat2.pt
            ├── gpt.pth
            ├── s2mel.pth
            └── wav2vec2bert_stats.pt

3. 后端配置

cd qwen3-tts-backend

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 安装依赖
pip install -r requirements.txt

# 安装 Qwen3-TTS
pip install qwen-tts

# 创建配置文件
cp .env.example .env

# 编辑配置文件
# 本地模型:设置 MODEL_BASE_PATH=./Qwen
# 仅阿里云 API设置 DEFAULT_BACKEND=aliyun
nano .env  # 或使用其他编辑器

重要的后端配置 (.env 文件)

MODEL_DEVICE=cuda:0              # 使用 GPU或 cpu 使用 CPU
MODEL_BASE_PATH=./Qwen           # 已下载模型的路径
DEFAULT_BACKEND=local            # 使用本地模型用 'local'API 用 'aliyun'
DATABASE_URL=sqlite:///./qwen_tts.db
SECRET_KEY=your-secret-key-here  # 请修改此项!

启动后端服务:

# 使用 uvicorn 直接启动
uvicorn main:app --host 0.0.0.0 --port 8000 --reload

# 或使用 conda如果你喜欢
conda run -n qwen3-tts uvicorn main:app --host 0.0.0.0 --port 8000 --reload

验证后端是否运行:

curl http://127.0.0.1:8000/health

4. 前端配置

cd qwen3-tts-frontend

# 安装依赖
npm install

# 创建配置文件
cp .env.example .env

# 启动开发服务器
npm run dev

5. 访问应用

在浏览器中打开:http://localhost:5173

默认账号

  • 用户名:admin
  • 密码:admin123456
  • 重要: 登录后请立即修改密码!

生产环境部署

用于生产环境:

# 后端:使用 gunicorn 或类似的 WSGI 服务器
cd qwen3-tts-backend
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000

# 前端:构建静态文件
cd qwen3-tts-frontend
npm run build
# 使用 nginx 或其他 Web 服务器提供 'dist' 文件夹

配置

后端配置

后端 .env 关键配置:

SECRET_KEY=your-secret-key
MODEL_DEVICE=cuda:0
MODEL_BASE_PATH=../Qwen
DATABASE_URL=sqlite:///./qwen_tts.db

DEFAULT_BACKEND=local

ALIYUN_REGION=beijing
ALIYUN_MODEL_FLASH=qwen3-tts-flash-realtime
ALIYUN_MODEL_VC=qwen3-tts-vc-realtime-2026-01-15
ALIYUN_MODEL_VD=qwen3-tts-vd-realtime-2026-01-15

后端选项:

  • DEFAULT_BACKEND: 默认 TTS 后端,可选值:localaliyun
  • 本地模式: 使用本地 Qwen3-TTS 模型(需要配置 MODEL_BASE_PATH
  • 阿里云模式: 使用阿里云 TTS API需要用户在设置页面配置 API 密钥)

阿里云配置:

  • 用户需要在 Web 界面的设置页面添加阿里云 API 密钥
  • API 密钥经过加密后安全存储在数据库中
  • 超级管理员可以控制是否为所有用户启用本地模型
  • 获取阿里云 API 密钥,请访问 阿里云控制台

使用说明

切换后端

  1. 登录 Web 界面
  2. 进入设置页面
  3. 配置您偏好的后端:
    • 本地模型:选择"本地模型"(需要超级管理员启用本地模型)
    • 阿里云 API:选择"阿里云"并添加您的 API 密钥
  4. 选择的后端将默认用于所有 TTS 操作
  5. 也可以通过 API 的 backend 参数为单次请求指定不同的后端

管理阿里云 API 密钥

  1. 在设置页面找到"阿里云 API 密钥"部分
  2. 输入您的阿里云 API 密钥
  3. 点击"更新密钥"保存并验证
  4. 系统会在保存前验证密钥的有效性
  5. 可随时使用删除按钮删除密钥

特别鸣谢

本项目基于阿里云 Qwen 团队开源的 Qwen3-TTS 官方仓库构建。特别感谢 Qwen 团队开源如此强大的文本转语音模型。

许可证

Apache-2.0 license

Description
Languages
Python 86.3%
TypeScript 12.6%
Cuda 0.4%
C 0.3%
CSS 0.2%
Other 0.1%