# Qwen3-TTS WebUI > **⚠️ 注意:** 本项目由大量 AI 生成,目前处于不稳定状态。稳定版将在 [Releases](../../releases) 中发布。 **非官方** 基于 Qwen3-TTS 的文本转语音 Web 应用,支持自定义语音、语音设计和语音克隆,提供直观的 Web 界面。 > 这是一个非官方项目。如需查看官方 Qwen3-TTS 仓库,请访问 [QwenLM/Qwen3-TTS](https://github.com/QwenLM/Qwen3-TTS)。 [English Documentation](./README.md) ## 功能特性 - 自定义语音:预定义说话人语音 - 语音设计:自然语言描述创建语音 - 语音克隆:上传音频克隆语音 - 双后端支持:支持本地模型和阿里云 TTS API 切换 - 多语言支持:English、简体中文、繁體中文、日本語、한국어 - JWT 认证、异步任务、语音缓存、暗黑模式 ## 界面预览 ### 桌面端 - 亮色模式 ![亮色模式](./images/lightmode-english.png) ### 桌面端 - 暗黑模式 ![暗黑模式](./images/darkmode-chinese.png) ### 移动端
移动端亮色模式 移动端设置
## 技术栈 **后端**: FastAPI + SQLAlchemy + PyTorch + JWT - 使用 PyTorch 直接推理 Qwen3-TTS 模型 - 异步任务处理与批量优化 - 支持本地模型 + 阿里云 API 双后端 **前端**: React 19 + TypeScript + Vite + Tailwind + Shadcn/ui ## Docker 部署 预构建镜像已发布至 Docker Hub:[bdim404/qwen3-tts-backend](https://hub.docker.com/r/bdim404/qwen3-tts-backend)、[bdim404/qwen3-tts-frontend](https://hub.docker.com/r/bdim404/qwen3-tts-frontend) **前置要求**:Docker、Docker Compose、NVIDIA GPU + [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html) ```bash 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 # 启动(仅 CPU) docker compose -f docker/docker-compose.yml up -d # 启动(GPU 加速) docker compose -f docker/docker-compose.yml -f docker/docker-compose.gpu.yml up -d ``` 访问 `http://localhost`,默认账号:`admin` / `admin123456` ## 安装部署 ### 环境要求 - Python 3.9+ 并支持 CUDA(用于本地模型推理) - Node.js 18+(用于前端) - Git ### 1. 克隆仓库 ```bash git clone https://github.com/bdim404/Qwen3-TTS-WebUI.git cd Qwen3-TTS-webUI ``` ### 2. 下载模型 **重要**: 模型**不会**自动下载,需要手动下载。 详细信息请访问官方仓库:[Qwen3-TTS 模型](https://github.com/QwenLM/Qwen3-TTS) 进入后端目录: ```bash cd qwen3-tts-backend mkdir -p Qwen && cd Qwen ``` **方式一:通过 ModelScope 下载(推荐中国大陆用户)** ```bash 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 模型(更小、更快): ```bash 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 下载** ```bash 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 模型(更小、更快): ```bash 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 ``` **最终目录结构:** ``` 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/ ``` ### 3. 后端配置 ```bash 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` 文件): ```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 # 请修改此项! ``` 启动后端服务: ```bash # 使用 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 ``` 验证后端是否运行: ```bash curl http://127.0.0.1:8000/health ``` ### 4. 前端配置 ```bash cd qwen3-tts-frontend # 安装依赖 npm install # 创建配置文件 cp .env.example .env # 编辑 .env 设置后端地址 echo "VITE_API_URL=http://localhost:8000" > .env # 启动开发服务器 npm run dev ``` ### 5. 访问应用 在浏览器中打开:`http://localhost:5173` **默认账号**: - 用户名:`admin` - 密码:`admin123456` - **重要**: 登录后请立即修改密码! ### 生产环境部署 用于生产环境: ```bash # 后端:使用 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` 关键配置: ```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 后端,可选值:`local` 或 `aliyun` - **本地模式**: 使用本地 Qwen3-TTS 模型(需要配置 `MODEL_BASE_PATH`) - **阿里云模式**: 使用阿里云 TTS API(需要用户在设置页面配置 API 密钥) **阿里云配置:** - 用户需要在 Web 界面的设置页面添加阿里云 API 密钥 - API 密钥经过加密后安全存储在数据库中 - 超级管理员可以控制是否为所有用户启用本地模型 - 获取阿里云 API 密钥,请访问 [阿里云控制台](https://dashscope.console.aliyun.com/) ### 前端配置 前端 `.env`: ```env VITE_API_URL=http://localhost:8000 ``` ## 使用说明 ### 切换后端 1. 登录 Web 界面 2. 进入设置页面 3. 配置您偏好的后端: - **本地模型**:选择"本地模型"(需要超级管理员启用本地模型) - **阿里云 API**:选择"阿里云"并添加您的 API 密钥 4. 选择的后端将默认用于所有 TTS 操作 5. 也可以通过 API 的 `backend` 参数为单次请求指定不同的后端 ### 管理阿里云 API 密钥 1. 在设置页面找到"阿里云 API 密钥"部分 2. 输入您的阿里云 API 密钥 3. 点击"更新密钥"保存并验证 4. 系统会在保存前验证密钥的有效性 5. 可随时使用删除按钮删除密钥 ## API ``` POST /auth/register - 注册 POST /auth/token - 登录 POST /tts/custom-voice - 自定义语音(支持 backend 参数) POST /tts/voice-design - 语音设计(支持 backend 参数) POST /tts/voice-clone - 语音克隆(支持 backend 参数) GET /jobs - 任务列表 GET /jobs/{id}/download - 下载结果 ``` **Backend 参数:** 所有 TTS 接口都支持可选的 `backend` 参数来指定使用的 TTS 后端: - `backend: "local"` - 使用本地 Qwen3-TTS 模型 - `backend: "aliyun"` - 使用阿里云 TTS API - 如果不指定,则使用用户的默认后端设置 ## 特别鸣谢 本项目基于阿里云 Qwen 团队开源的 [Qwen3-TTS](https://github.com/QwenLM/Qwen3-TTS) 官方仓库构建。特别感谢 Qwen 团队开源如此强大的文本转语音模型。 ## 许可证 Apache-2.0 license