SDU棋界精灵——FunASR语音识别模型

FunASR 语音识别模型 在项目中作为核心语音识别组件,主要用于实现语音数据到文本的转换,支持 本地推理 和 远程 API 调用 两种模式。通过灵活的本地部署和远程调用模式,实现了从音频采集到文本输出的全流程支持。其与项目的 WebSocket 通信协议、LLM 模块及 IOT 控制功能深度集成,为智能硬件的语音交互提供了高效的解决方案。开发者可根据硬件算力和网络环境选择合适的模式,快速搭建定制化的语音识别服务。

一、模型训练准备

1.核心功能

  • 作为SDU棋界精灵默认的语音识别方案之一,负责将设备端(如 ESP32)采集的音频数据转换为文本,供后续的 意图识别LLM 对话处理 和 IOT 控制 使用。
  • 支持 国语、粤语、英语、日语、韩语 等多语言识别(通过配置切换模型实现)。

2.预训练模型准备

  • 模型获取:从 ModelScope 或百度网盘下载预训练模型(如 SenseVoiceSmall),存放至项目目录 models/SenseVoiceSmall/model.pt
  • 在 main/chessdemon-server/config.yaml 中配置本地模式:
ASR:
  FunASR:
    type: fun_local       # 指定本地推理模式
    model_dir: models/SenseVoiceSmall  # 模型路径
    output_dir: tmp/      # 临时音频文件存储目录
    sample_rate: 16000    # 音频采样率(需与设备一致)
    language: zh-CN       # 识别语言(默认中文)

3.代码实现

模型初始化:通过 funasr.py 加载模型并创建识别实例。

from modelscope.pipelines import pipeline
from core.providers.asr.base import ASRProviderBase

class ASRProvider(ASRProviderBase):
    def __init__(self, model_dir, **kwargs):
        self.asr_pipeline = pipeline(
            task="auto_speech_recognition",
            model=model_dir,
            model_revision="master"
        )

    def speech_to_text(self, opus_data: bytes, session_id: str):
        # 解码 Opus 音频为 PCM
        pcm_data = self.decode_opus(opus_data)
        # 调用模型推理
        result = self.asr_pipeline(pcm_data, show_progress=False)
        return result["text"], None  # 返回识别文本和时间戳(可选)
  • 数据流转:设备通过 WebSocket 发送 Opus 音频数据 → 后端解码为 PCM → 调用本地模型推理 → 返回文本结果。

4.集成架构

SDU棋界精灵通过 插件化架构 支持多种 ASR 引擎,FunASR 是其中的默认选项之一。架构设计特点:

  • 配置驱动:通过 config.yaml 选择 ASR 引擎类型(本地或远程)。
  • 抽象接口:定义统一的 ASRProviderBase 基类,不同引擎实现相同接口。
  • 多模式支持
    • 本地模式:直接调用本地模型文件(适合离线环境)。
    • 服务模式:通过 WebSocket 调用远程 FunASR 服务(适合分布式部署)。

二、API 调用模式的运用

1. 环境准备

  • 依赖要求
    • Docker:用于容器化部署(推荐版本 >=20.10)。
    • 模型存储目录:需提前在宿主机创建,用于存放预训练模型。
  • 硬件选取
    • CPU 模式:适合中小规模并发(推荐 4 核 8GB 以上配置)。
    • GPU 模式:如需高性能推理,需安装 NVIDIA 驱动及 Docker CUDA 支持。

2. 拉取并运行 Docker 镜像

CPU 版本(默认)
# 创建模型存储目录(宿主机路径)
mkdir -p ./funasr-resources/models

# 拉取 FunASR 运行时镜像(含在线服务功能)
docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12

# 启动容器并映射端口和模型目录
docker run -d --name funasr-server \
  -p 10096:10095 \
  -v $(pwd)/funasr-resources/models:/workspace/models \
  --restart always \
  registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12
GPU 版本(需支持 CUDA)
# 拉取 GPU 镜像(示例:PyTorch 2.0 + CUDA 12.1)
docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-gpu-2.0.0

# 启动时添加 --gpus 参数
docker run -d --name funasr-server-gpu \
  --gpus all \
  -p 10096:10095 \
  -v $(pwd)/funasr-resources/models:/workspace/models \
  registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-gpu-2.0.0

3. 服务端初始化配置

进入容器后,需配置模型路径并启动服务:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值