FunASR:语音识别与合成一体化,企业级开发实战详解

发布于:2025-05-16 ⋅ 阅读:(20) ⋅ 点赞:(0)

简介

FunASR是由阿里巴巴达摩院开源的高性能语音识别工具包,它不仅提供语音识别(ASR)功能,还集成了语音端点检测(VAD)、标点恢复、说话人分离等工业级模块,形成了完整的语音处理解决方案。 FunASR支持离线和实时两种模式,能够高效处理多语言音频,并提供高精度的识别结果。结合ModelScope生态,FunASR可以与文本到语音(TTS)模型无缝衔接,实现语音识别与合成一体化。本文将从零开始,详细介绍FunASR的环境搭建、模型选择、核心功能实现及企业级部署优化,帮助开发者快速掌握这一前沿技术。

一、环境搭建与模型安装

FunASR的环境搭建相对简单,主要依赖Python和PyTorch生态。首先需要准备开发环境,确保系统满足最低要求:Python≥3.8、PyTorch≥1.13和Torchaudio。FunASR支持多种部署方式,包括本地Python部署和Docker容器化部署。对于新手开发者,推荐使用本地Python部署;而对于企业级应用,Docker部署更加安全高效,支持高并发处理。

1. 本地Python部署

本地部署主要分为三个步骤:克隆FunASR仓库、安装依赖库和配置模型路径。首先,从GitHub克隆FunASR仓库:

git clone https://github.com/modelscope/FunASR.git
cd FunASR

然后,安装必要的依赖库。FunASR支持Conda和pip两种安装方式,推荐使用Conda创建独立的开发环境:

conda create -n funasr python=3.9
conda activate funasr
conda install pytorch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 pytorch-cuda=11.8 -c pytorch -c nvidia

完成环境配置后,安装FunASR库:

pip install -U funasr

如果需要使用工业预训练模型,还需安装ModelScope和HuggingFace:

pip install -U modelscope huggingface huggingface_hub

首次运行时,FunASR会自动下载所需模型到本地缓存目录(.cache/modelscope/hub/iic)。开发者也可以手动下载模型并放置在指定路径下。

2. Docker容器部署

对于企业级应用,Docker部署更加适合。FunASR提供了预构建的Docker镜像,支持CPU和GPU两种配置。以下是Docker部署的步骤:

首先,拉取FunASR镜像:

docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.6

然后,创建模型存储目录并启动容器:

mkdir -p ./funasr-runtime-resources/models
docker run -p 10095:10095 -it --privileged=true \
  -v $PWD/funasr-runtime-resources/models:/workspace/models \
  registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.6

进入容器后,启动服务:

cd FunASR/runtime
nohup bash run_server.sh \
  --download-model-dir /workspace/models \
  --vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx \
  --model-dir damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx \
  --punc-dir damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx \
  --lm-dir damo/speech_ngram_lm_zh-cn-ai-wesp-fst \
  --itn-dir thuduj12/fst_itn_zh \
  --certfile 0 \
  --hotword /workspace/models/hotwords.txt > log.txt 2>&1 &

企业级应用通常需要高并发处理能力,可以通过docker-compose实现多实例部署:

version: "3.7"
services:
  funasronline:
    image: funasr-cpu:0.4.6
    container_name: funasronline
    restart: always
    privileged: true
    networks:
      - asrnet
    ports:
      - "10095:10095"
    volumes:
      - "./funasr-runtime-resources/models:/workspace/models"
    command: bash -c "cd /workspace/FunASR/runtime && nohup bash run_server.sh --download-model-dir /workspace/models --vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx --model-dir damo/speech_paraformer-large-vad-punc_asr nat-zh-cn-16k-common-vocab8404-onnx --punc-dir damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx --certfile 0 --hotword /workspace/models/hotwords.txt"
networks:
  asrnet:
    driver: bridge

运行docker-compose up启动服务。Docker部署支持SSL证书配置和热词模型加载,通过--certfile 0可以关闭SSL,--hotword参数指定热词文件路径。

二、模型选择与核心功能实现

FunASR提供了丰富的预训练模型,涵盖了多种语音处理任务。根据不同的应用场景,可以选择合适的模型组合。以下是FunASR的主要模型及其用途:

模型名称 任务类型 训练数据 参数量
paraformer-zh 语音识别(非实时) 60,000小时中文 220M
paraformer-zh-streaming 语音识别(实时) 60,000小时中文 220M
paraformer-en 语音识别(非实时) 50,000小时英文 220M
fsmn-vad 语音活动检测(VAD) 5,000小时中英文 0.4M
ct-punc 标点恢复 100M中英文 290M
cam++ 说话人分离 5,000小时 7.2M
damo/speech_campplus Sv_zh-cn_16k-common 说话人确认 5,000小时 7.2M
1. 语音识别(ASR)

语音识别是FunASR的核心功能,支持离线和实时两种模式。离线模式适合处理完整的音频文件,实时模式则适用于流式音频输入。以下是离线语音识别的代码示例:

from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess

# 初始化模型
model = AutoModel(model=

网站公告

今日签到

点亮在社区的每一天
去签到