用 Docker 部署语音识别服务(funasr)

第一步:构建并本地运行语音识别 API 服务

我们要先完成的,是 创建一个可以上传音频并返回识别文本的服务接口,它可以本地测试,并准备好后续 Docker 打包、Dify 调用。

bash 复制代码
mkdir funasr_service && cd funasr_service
touch app.py funasr_local.py requirements.txt Dockerfile
  1. 创建并编辑 app.py
python 复制代码
from fastapi import FastAPI, UploadFile, File
from fastapi.middleware.cors import CORSMiddleware
from funasr_local import infer
import os

app = FastAPI()

# 跨域支持
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 生产环境请替换为指定域名
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

@app.get("/")
def index():
    return {"message": "FunASR Speech Recognition Service is running."}

@app.post("/recognize")
async def recognize_audio(file: UploadFile = File(...)):
    tmp_path = f"/tmp/{file.filename}"
    with open(tmp_path, "wb") as f:
        f.write(await file.read())

    try:
        text = infer(tmp_path)
    except Exception as e:
        return {"error": str(e)}

    os.remove(tmp_path)
    return {"text": text}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=5077)
  1. 创建并编辑 funasr_local.py
python 复制代码
from funasr import AutoModel

# 初始化模型(只加载一次)
model = AutoModel(
    model="paraformer-zh",
    model_revision="v2.0.9",    # 确保是有效版本
    disable_update=True,         # 禁止自动更新,启动更快
    vad_model="fsmn-vad",
    vad_model_revision="v2.0.4"
    # 去掉 punc_model 参数,避免加载失败
)

def infer(audio_path: str) -> str:
    """
    传入音频文件路径,返回识别文本
    """
    result = model.generate(input=audio_path)
    return result[0]['text']

3. 创建并编辑 requirements.txt

python 复制代码
fastapi
uvicorn
torch
torchaudio
torchvision
funasr  
python-multipart
  1. 创建Dockerfile
python 复制代码
# 使用官方 Python 3.10 轻量版镜像
FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 复制项目文件到容器
COPY . /app

# 升级 pip 并安装依赖
RUN pip install --upgrade pip && \
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu && \
    pip install -r requirements.txt

# 暴露端口(根据你的服务端口)
EXPOSE 5077

# 启动命令,替换成你自己的启动脚本
CMD ["python", "app.py"]

5 。构建docker镜像

python 复制代码
cd D:\funasr_service
docker build -t funasr_service_image .

经过漫长的等待之后

执行命令

python 复制代码
docker run -d -p 5077:5077 --name funasr_service funasr_service_image

容器成功运行

  • -d:后台运行容器

  • -p 5077:5077:把容器的5077端口映射到主机的5077

  • --name funasr_service:容器名称

  • funasr_service_image:你构建的镜像

可以调用就行

如果因为那些地方不懂 可以直接私信联系博主获取调试好的tar文件 直接使用docker load就好 方便省事但不免费(博主也想加个鸡腿)

相关推荐
智恒百亿5 小时前
RTX 5090 八卡服务器 vs RTX PRO 6000 整机:AI 推理、微调与渲染选型部署指南
运维·服务器·rtx5090
蓝胖的四次元口袋7 小时前
Docker Compose多容器编排与Nginx集群实战
运维·nginx·docker compose
懂软件的胡子个哥8 小时前
微信 API 消息回调怎么设计,才能避免丢消息和重复处理
运维·微信·架构·wechatapi·个人微信号二次开发
吉甫作诵8 小时前
Redis 常用命令大全:11 大类命令速查手册
运维·数据库·redis·缓存·nosql
Acrellea9 小时前
告别粗放式能耗管理!安科瑞EIOT平台助力产业园区智慧低碳运营
运维·安全·能源
Databuff10 小时前
五款主流 SSH 免费工具介绍
运维·ssh·运维开发
菜鸟学编程o10 小时前
Linux常见指令
linux·运维·服务器
pt104311 小时前
AIOps机器学习——当警报阈值被调高之后
运维·人工智能·自动化
迪康coolmu11 小时前
企业文件外发管控落地实践 —— 基于迪康端点安全一体化管理系统
运维·网络·经验分享·安全
见闻小天地12 小时前
四方电气DL300变频器面向雕铣机多工况的技术参数与适配验证
运维·人工智能·业界资讯