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

ubuntu基于docker部署呼叫中心质检【支持情绪,话术对比】

最终部署流程:基于 Docker 的 FunASR 质检系统(中国大陆优化版)

以下是为中国大陆用户优化的详细部署流程,包含 Docker 镜像加速、FunASR 模型下载优化、依赖安装加速 等步骤,确保快速稳定部署。


1. 环境准备

(1)系统更新
# 更新系统并安装基础工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git vim htop tmux unzip
(2)配置 Docker 镜像加速(阿里云)
# 创建 Docker 配置文件
sudo mkdir -p /etc/docker

# 添加阿里云镜像加速器配置
sudo tee /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://<你的阿里云加速器地址>.mirror.aliyuncs.com"]
}
EOF

# 重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker

  1. 登录 阿里云容器镜像服务控制台 → 获取专属加速器地址(需注册阿里云账号)。
  2. 替换 https://<你的阿里云加速器地址>.mirror.aliyuncs.com 为实际地址。

2. 安装 Docker 和 Docker Compose

(1)安装 Docker(使用国内源)
# 使用阿里云镜像源安装 Docker
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 启动 Docker 并加入用户组
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER
newgrp docker  # 刷新用户组
(2)安装 Docker Compose
# 使用国内镜像下载 Docker Compose
sudo curl -L "https://ghproxy.com/https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

3. 创建项目目录

mkdir -p /data/funasr-docker
cd /data/funasr-docker

4. 编写 Dockerfile(国内镜像优化)

创建 Dockerfile

# 使用阿里云镜像加速
FROM registry.cn-hangzhou.aliyuncs.com/library/python:3.9-slim

# 设置工作目录
WORKDIR /app

# 安装系统依赖(使用阿里云源)
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \
    apt update && apt install -y ffmpeg

# 使用清华 PyPI 镜像安装 Python 依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

# 复制代码
COPY . .

# 暴露端口
EXPOSE 8000

# 启动命令
CMD ["celery", "-A", "tasks", "worker", "--loglevel=info"]

5. 编写 Docker Compose 文件

创建 docker-compose.yml

version: "3.8"

services:
  redis:
    image: registry.cn-hangzhou.aliyuncs.com/library/redis:latest  # 使用阿里云镜像
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data

  celery-worker:
    build: .
    container_name: celery-worker
    depends_on:
      - redis
    environment:
      - CELERY_BROKER_URL=redis://redis:6379/0
      - CELERY_RESULT_BACKEND=redis://redis:6379/0
    volumes:
      - .:/app

  fastapi:
    build: .
    container_name: fastapi
    ports:
      - "8000:8000"
    command: uvicorn api:app --host 0.0.0.0 --port 8000
    depends_on:
      - redis
    environment:
      - CELERY_BROKER_URL=redis://redis:6379/0
      - CELERY_RESULT_BACKEND=redis://redis:6379/0
    volumes:
      - .:/app

volumes:
  redis_data:

6. 编写代码文件

(1)创建 requirements.txt
funasr
torch==2.0.1
torchaudio==2.0.2
celery
redis
fastapi
uvicorn
snownlp
sentence-transformers
jieba
scikit-learn
ahocorasick
(2)创建 tasks.py
from celery import Celery
from funasr import AutoModel
from snownlp import SnowNLP
import ahocorasick
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity

# 初始化 Celery
app = Celery("tasks", broker="redis://redis:6379/0", backend="redis://redis:6379/0")

# 加载 FunASR 模型(使用国内模型路径)
model = AutoModel(model="/app/models/paraformer-zh")

# 违规词检测配置
violation_keywords = ["投诉", "退款", "举报", "转上级"]
automaton = ahocorasick.Automaton()
for idx, word in enumerate(violation_keywords):
    automaton.add_word(word, (idx, word))
automaton.make_automaton()

# 标准话术模板
templates = [
    "您好,请问有什么可以帮您?请提供订单号。",
    "感谢来电,祝您生活愉快!"
]
sbert_model = SentenceTransformer("paraphrase-multilingual-mpnet-base-v2")

# 情绪分析
def analyze_sentiment(text):
    sentiment = SnowNLP(text).sentiments
    return "积极" if sentiment > 0.6 else "中性" if sentiment > 0.4 else "消极"

# 违规词检测
def detect_violations(text):
    return [{"word": word, "position": (end-len(word)+1, end)} for (end, (_, word)) in automaton.iter(text)]

# 话术对比
def calculate_similarity(text):
    return cosine_similarity(
        sbert_model.encode([text]),
        sbert_model.encode(templates)
    ).tolist()

# 任务定义
@app.task
def transcribe_audio(audio_path):
    result = model.generate(input=audio_path)
    text = result[0]["text"]
    return {
        "text": text,
        "sentiment": analyze_sentiment(text),
        "violations": detect_violations(text),
        "similarity": calculate_similarity(text)
    }
(3)创建 api.py
from fastapi import FastAPI
from tasks import transcribe_audio
from celery.result import AsyncResult

app = FastAPI()

@app.post("/transcribe")
async def transcribe(audio_path: str):
    task = transcribe_audio.delay(audio_path)
    return {"task_id": task.id}

@app.get("/result/{task_id}")
async def get_result(task_id: str):
    result = AsyncResult(task_id)
    return result.get() if result.ready() else {"status": "pending"}

7. 下载 FunASR 模型(国内加速)

# 创建模型目录
mkdir -p models

# 使用代理或国内镜像下载模型
wget -O models/paraformer-zh https://modelscope.cn/api/v1/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/repo?Revision=master\&FilePath=model.pb

8. 构建并启动服务

# 构建镜像(使用缓存加速)
docker-compose build

# 启动服务
docker-compose up -d

# 查看运行状态
docker-compose ps

9. 测试服务

(1)提交测试音频
# 上传测试文件(示例:example.wav)
cp /path/to/your/audio.wav /data/funasr-docker/example.wav

# 调用 API
curl -X POST http://localhost:8000/transcribe -H "Content-Type: application/json" -d '{"audio_path":"/app/example.wav"}'
(2)获取结果
# 替换 <task_id> 为实际任务 ID
curl http://localhost:8000/result/<task_id>

10. 常见问题解决

(1)Docker 镜像拉取失败
  • 方案:检查 /etc/docker/daemon.json 中的镜像加速地址是否正确。
(2)模型下载缓慢
  • 方案:手动下载模型后放入 models 目录,或使用迅雷等工具加速。
(3)依赖安装超时
  • 方案:在 Dockerfile 中增加 --default-timeout=1000 参数:
    RUN pip install --default-timeout=1000 -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    

总结

通过以上步骤,可成功部署支持 语音识别、情绪分析、违规词检测、话术对比 的质检系统。所有环节均针对中国大陆网络环境优化,确保快速稳定运行。后续可通过增加 Celery Worker 实例提升并发能力。


http://www.kler.cn/a/549700.html

相关文章:

  • c# —— StringBuilder 类
  • QxOrm生成json
  • 2025年2月16日笔记
  • 如何使用 HPjtune 分析 Java GC 日志并优化 JVM 性能
  • 性格测评小程序07用户登录
  • 如何利用AI一键生成PPT,提升工作效率和创意灵感
  • Effective Objective-C 2.0 读书笔记——协议和分类
  • LLaMa Factory 安装
  • HarmonyOS 5.0应用开发——Canvas制作个人签名
  • 微软官方出品GPT大模型编排工具:7个开源项目
  • mysql快照读当前读
  • LlamaFactory可视化模型微调-Deepseek模型微调+CUDA Toolkit+cuDNN安装
  • 缓存的介绍
  • STM32的DMA解释
  • hivemetastore 连接过多导致sql查询慢
  • Fiori APP配置中的Semantic object 小bug
  • 如何避免redis长期运行持久化AOF文件过大的问题:AOF重写
  • 深度学习:基于Qwen复现DeepSeek R1的推理能力
  • 基于mediapipe深度学习的手势数字识别系统python源码
  • 力扣 乘积最大子数组