当前位置: 首页 > news >正文

speech_sambert-hifigan_tts_zh-cn_16k的docker部署

speech_sambert-hifigan_tts_zh-cn_16k的docker部署

要部署 iic/speech_sambert-hifigan_tts_zh-cn_16k 模型的 Docker 容器,需要创建一个包含所有依赖的环境并启动服务。以下是完整的部署指南:

1. 创建 Dockerfile

首先创建一个 Dockerfile 来定义容器环境:

dockerfile

# 使用 Python 基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 安装系统依赖
RUN apt-get update && apt-get install -y \build-essential \ffmpeg \&& rm -rf /var/lib/apt/lists/*# 安装 Python 依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt# 复制模型代码和配置
COPY . .# 暴露服务端口
EXPOSE 8000# 启动服务
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]

2. 创建 requirements.txt

列出所需的 Python 依赖:

txt

fastapi==0.95.1
uvicorn==0.22.0
modelscope==1.9.5
torch==2.0.1
numpy==1.24.3

3. 创建 API 服务代码 (app.py)

编写一个简单的 FastAPI 服务来处理语音合成请求:

python

运行

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import uvicorn
import torch
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks# 初始化模型
device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = pipeline(task=Tasks.text_to_speech,model="iic/speech_sambert-hifigan_tts_zh-cn_16k",device=device
)# 创建 FastAPI 应用
app = FastAPI()# 定义请求模型
class TTSRequest(BaseModel):text: strvoice: str = "zhitian_emo"  # 默认音色# 语音合成接口
@app.post("/tts")
async def text_to_speech(request: TTSRequest):try:# 调用模型生成语音result = pipe({"text": request.text,"voice": request.voice})# 返回 Base64 编码的音频return {"output": result["output_wav"],"text": request.text,"voice": request.voice}except Exception as e:raise HTTPException(status_code=500, detail=str(e))if __name__ == "__main__":uvicorn.run(app, host="0.0.0.0", port=8000)

4. 构建 Docker 镜像

在包含上述文件的目录下执行:

bash

docker build -t tts-modelscope .

     docker build -t tts-modelscope .

5. 运行 Docker 容器

bash

docker run -d -p 8000:8000 --gpus all tts-modelscope

 docker run -p 8000:8000  tts-modelscope

docker run -it --rm tts-modelscope bash

docker run -v D:\Hworkspace\pythonProject\aiagent\ai004_speech_sambert_docker:/app -it --rm tts-modelscope bash

modelscope.hub.errors.NotExistError: The model: iic/speech_sambert-hifigan_tts_zh-cn_16k has no revision: v1.9.5 valid are: [v1.0.2,v1.0.1,v0.1.0,v1.0.0]!
 

docker run --name my-container -p 8000:8000 my-image:latest

  • 参数说明
    • -d:后台运行容器
    • -p 8000:8000:将容器的 8000 端口映射到主机的 8000 端口
    • --gpus all:启用 GPU 支持(如果有 GPU)

5.1. 启动命令

        uvicorn apdp:app --host 0.0.0.0 --port 8000 --workers 4

        uvicorn apdp:app --host 0.0.0.0 --port 8000

        docker run nginx

关键说明:

  1. 命令格式:直接去掉了原指令中的 JSON 数组格式,保留了命令及其参数的原始顺序
  2. 参数解释
    • apdp:app:指定了 Uvicorn 要运行的 ASGI 应用,通常是模块名:应用实例名
    • --host 0.0.0.0:让服务器监听所有可用的网络接口
    • --port 8000:设置服务器监听的端口为 8000

附加建议:

如果需要在生产环境中运行,建议添加--workers参数以提高并发处理能力:

bash

uvicorn apdp:app --host 0.0.0.0 --port 8000 --workers 4

6. 使用 API

向容器发送请求测试:

import requests
import json
import base64
from io import BytesIO
from scipy.io import wavfile
import sounddevice as sd# API 地址
url = "http://localhost:8000/tts"# 请求数据
payload = {"text": "北京今天天气怎么样","voice": "zhitian_emo"
}# 发送请求
response = requests.post(url, json=payload)
data = response.json()# 播放音频
audio_data = base64.b64decode(data["output"])
with BytesIO(audio_data) as f:samplerate, audio_array = wavfile.read(f)
sd.play(audio_array, samplerate)
sd.wait()

7.优化建议

  1. 模型缓存:首次运行时模型会自动下载,可以预先下载并挂载到容器中以加速启动。

  2. GPU 加速:确保主机安装了 NVIDIA 驱动和 Docker 运行时,以充分利用 GPU。

  3. 并发处理:在生产环境中,可以添加负载均衡器(如 Nginx)来处理多个请求。

  4. 安全配置:添加 API 密钥验证,避免未授权访问。

通过以上步骤,你可以将 iic/speech_sambert-hifigan_tts_zh-cn_16k 模型部署为一个独立的 Docker 服务,方便集成到其他应用中。

http://www.dtcms.com/a/267764.html

相关文章:

  • 【电赛培训】运算放大器、滤波器
  • 关于 JNI 函数逆向(从 Java 到 native)
  • c++文字游戏_闯关打怪
  • 查看linux中steam游戏的兼容性
  • centos8.5安装jdk21详细安装教程
  • 网络编程(二)TCP和UDP
  • BM6 判断链表中是否有环(牛客)
  • 2025年- H92-Lc200-- 64.最小路径和(多维动态规划)--Java版
  • 详解存储单位、内存寻址及数据存储方式
  • Feign调用报“请求方法POST不支持“错误
  • WPF学习笔记(25)MVVM框架与项目实例
  • 基于pcl点云库实现激光雷达数据采集
  • java整合itext pdf实现自定义PDF文件格式导出
  • 调参——optuna
  • Python 面向对象编程(OOP)全面详解:类、对象与 API
  • 【算法刷题记录(简单题)002】字符串字符匹配(java代码实现)
  • 线程池的七个参数设计源于对高并发场景下资源管理、系统稳定性与性能平衡的深刻洞察
  • Policy Gradient【强化学习的数学原理】
  • 【C语言刷题】第十一天:加量加餐继续,代码题训练,融会贯通IO模式
  • JMM--数据原子操作
  • Python asyncio库与GIL之间的关系,是否能够解决核心问题?
  • Spring--循环依赖以及三级缓存详解
  • Linux安装java后没法运行
  • 计算机组成原理《浮点数的存储》
  • Python基础之字典(Dictionary)全面指南
  • 南山科技园的步行
  • Qt项目锻炼——TODO清单(三)
  • 【论文笔记】OctoThinker:突破 Llama 推理瓶颈的中期训练范式
  • 乌邦图(20.04)添加中文拼音(中文输入法)
  • 实现电池储能装置的双向DCDC