文本转语音系统

基于Llasa-8B的高质量文本转语音系统,支持智能GPU内存管理、多语言语音生成和声音克隆功能。

  • by neosun100
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 neosun100/llasa-tts-8b-webui

使用说明

🎙️ Llasa-TTS-8B WebUI演示

英语 | 简体中文 | 繁体中文 | 日本语

基于Llasa-8B的高质量文本转语音系统,具有智能GPU内存管理

✨ 特性

  • 🚀 智能GPU管理:延迟加载+即时卸载,将空闲GPU内存减少96%(从24GB减少到<1GB)
  • 🎨 三种访问模式:Web UI(Gradio)+REST API(Flask)+MCP(模型上下文协议)
  • 🔄 自动GPU选择:自动选择内存使用最少的GPU
  • 🌍 多语言支持:中文、英文和混合语言语音生成
  • 🎭 语音克隆:基于参考音频的高质量语音克隆
  • 🐳 一键部署:Docker+Docker组合用于生产就绪部署
  • ⚡ 优化性能:ASR更快的Whisper,比官方Whisper快500%

📋 目录

🚀 快速开始

先决条件

  • Linux系统(建议使用Ubuntu 20.04+)
  • 英伟达GPU(24GB+VRAM)
  • Docker+Docker编写+nvidia Docker

一次指令发射

git clone https://github.com/yourusername/llasa-tts-8b-webui.git
cd llasa-tts-8b-webui
chmod +x start.sh
./start.sh

访问服务:

  • Web用户界面: http://localhost:7860
  • API: http://localhost:7861
  • API文件: http://localhost:7861/apidocs

📦 安装

方法一:Docker部署(推荐)

步骤1:克隆存储库

git clone https://github.com/yourusername/llasa-tts-8b-webui.git
cd llasa-tts-8b-webui

步骤2:配置环境

cp .env.example .env
# Edit .env to set your configuration

步骤3:启动服务

./start.sh

脚本将:

  • ✅ 检查Docker环境
  • ✅ 自动选择最不繁忙的GPU
  • ✅ 构建Docker镜像
  • ✅ 启动容器
  • ✅ 显示访问信息

Docker编写示例:

version: '3.8'
services:
  llasa-tts-webui:
    image: llasa-tts-8b:latest
    container_name: llasa-tts-8b-webui
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              device_ids: ['0']
              capabilities: [gpu]
    ports:
      - "7860:7860"  # Web UI
      - "7861:7861"  # REST API
    volumes:
      - ./models_cache:/root/.cache/huggingface
      - ./outputs:/app/outputs
    environment:
      - GPU_IDLE_TIMEOUT=600
      - HF_ENDPOINT=https://hf-mirror.com
    restart: unless-stopped

Docker运行命令:

docker run -d \
  --name llasa-tts-8b \
  --gpus '"device=0"' \
  -p 7860:7860 \
  -p 7861:7861 \
  -v $(pwd)/models_cache:/root/.cache/huggingface \
  -v $(pwd)/outputs:/app/outputs \
  -e GPU_IDLE_TIMEOUT=600 \
  llasa-tts-8b:latest

方法2:康达环境

第一步:营造环境

conda create -n llasa-tts python=3.9
conda activate llasa-tts

步骤2:安装依赖项

pip install -r requirements.txt

步骤3:运行应用程序

python main.py

访问权限:http://localhost:7860

⚙️ 配置

环境变量

变量 默认值 描述
GPU_IDLE_TIMEOUT 600 GPU空闲超时(秒)
UI_PORT 7860 Web UI端口
API_PORT 7861 REST API端口
HF_TOKEN - 拥抱脸令牌(可选)
HF_ENDPOINT https://hf-mirror.com 拥抱面镜
LLASA_MODEL_PATH HKUSTAudio/Llasa-8B Llasa模型路径
XCODEC_MODEL_PATH HKUSTudio/xcodec2 xcodec2模型路径
WHISPER_MODEL_PATH Systran/faster-whisper-large-v3 whisper模型路径

配置文件

创建 .env 从模板:

cp .env.example .env

编辑 .env:

# GPU Configuration
NVIDIA_VISIBLE_DEVICES=0
GPU_IDLE_TIMEOUT=600

# Port Configuration
UI_PORT=7860
API_PORT=7861

# HuggingFace Configuration
HF_ENDPOINT=https://hf-mirror.com
# HF_TOKEN=your_token_here

# Model Paths (optional, use local models)
# LLASA_MODEL_PATH=/path/to/Llasa-8B
# XCODEC_MODEL_PATH=/path/to/xcodec2

📖 用法

Web用户界面

  1. 打开http://localhost:7860
  2. 上传参考音频(15-20秒,WAV格式)
  3. 点击“自动转录”或手动输入参考文本
  4. 输入要生成的目标文本
  5. 点击“生成语音”

REST API

健康检查:

curl http://localhost:7861/health

生成语音:

curl -X POST http://localhost:7861/api/tts \
  -F "audio=@reference.wav" \
  -F "ref_text=Reference audio text" \
  -F "target_text=Text to generate" \
  --output generated.wav

GPU状态:

curl http://localhost:7861/api/gpu/status

手动卸载:

curl -X POST http://localhost:7861/api/gpu/offload

MCP(模型上下文协议)

运行MCP服务器:

docker exec -it llasa-tts-8b-webui python mcp_server.py

或者在主机上:

python mcp_server.py

可用工具:

  • generate_speech() -生成语音
  • transcribe_audio() -转录音频
  • get_gpu_status() -获取GPU状态
  • offload_gpu() -卸载GPU内存
  • release_gpu() -完全释放GPU

📚 API文档

端点

方法 端点 描述
得到 /health 健康检查
得到 /api/gpu/status 获取GPU状态
职位 /api/gpu/offload 将模型卸载到CPU
职位 /api/gpu/release 发布所有型号
职位 /api/transcribe 转录音频(ASR)
职位 /api/tts 生成语音(TTS)
得到 /apidocs Swagger文档

API示例

看 API文档 用于交互式示例。

🛠️ 技术栈

核心技术

  • PyTorch 2.6.0 -深度学习框架
  • 变压器4.45.2 -模型加载
  • 等级 4.0+ -Web用户界面
  • 烧瓶3.0.0 -REST API
  • FastMCP -MCP服务器

模型

  • 拉萨-8B -语音生成(~17GB)
  • Xcodec 2 -音频编解码器(~3GB)
  • 更快的耳语 -语音识别(~3GB,CPU)

部署

  • 码头工人 -集装箱化
  • Docker Compose -编排
  • NVIDIA Docker -GPU支持

📊 演出

GPU内存使用情况

阶段 传统 智能管理 储蓄
启动 24 GB 0 GB 100%
正在运行 24 GB 24 GB 0%
空闲 24 GB <1 GB 96%

加载时间(RTX 4090)

  • 首次加载:20-30秒
  • CPU → GPU:2-5秒
  • GPU → CPU:2秒
  • 完全释放:1秒

🤝 贡献

欢迎投稿!请按照以下步骤操作:

  1. 复刻仓库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

📝 更新日志

v1.0.0(2025-12-06)

  • ✨ 初始版本
  • 🚀 智能GPU内存管理
  • 🎨 三种访问模式(UI+neneneba API+MCP)
  • 🔄 自动GPU选择
  • 🐳 Docker部署

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

备注:模型和依赖项有自己的许可证:

🙏 致谢

📞 联系与支持

⭐ 明星历史

📱 关注我们


Made with ❤️ by the Llasa-TTS-8B Team