突破性能瓶颈:FunASR在Mac M系列芯片上的GPU加速实战指南

【免费下载链接】FunASR A Fundamental End-to-End Speech Recognition Toolkit and Open Source SOTA Pretrained Models, Supporting Speech Recognition, Voice Activity Detection, Text Post-processing etc. 【免费下载链接】FunASR 项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR

引言:M系列芯片用户的ASR痛点与解决方案

Mac M系列芯片凭借其强大的ARM架构性能,成为开发者的理想选择。然而,在运行语音识别工具如FunASR时,许多用户面临着GPU加速配置复杂、性能未充分发挥等问题。本文将详细介绍如何在Mac M系列芯片上实现FunASR的GPU加速,通过Metal框架利用Apple Silicon的强大算力,显著提升语音识别效率。

FunASR架构概览

FunASR(Fundamental End-to-End Speech Recognition Toolkit)是一个全栈式语音识别工具包,支持语音识别、语音活动检测、文本后处理等功能。其核心架构如图所示:

FunASR架构概览

该架构集成了达摩院开源的语音端点检测(VAD)、Paraformer-large语音识别(ASR)、标点恢复(PUNC)等模型,形成完整的语音识别链路。详细架构设计可参考官方文档

环境准备与依赖安装

系统要求

  • macOS 12.0+(支持Metal框架)
  • Python 3.8-3.10(推荐使用conda管理环境)
  • Xcode Command Line Tools(提供必要的编译工具)

conda环境配置

首先,为M系列芯片安装适配的conda环境:

# 下载适用于Apple Silicon的Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
sh Miniconda3-latest-MacOSX-arm64.sh
source ~/.zshrc

# 创建并激活FunASR环境
conda create -n funasr python=3.8
conda activate funasr

PyTorch与Metal支持

安装支持Metal的PyTorch版本,以利用M系列芯片的GPU算力:

# 安装支持Metal的PyTorch
pip3 install torch torchaudio --index-url https://download.pytorch.org/whl/cpu

注意:目前PyTorch对Apple Silicon的GPU支持仍在完善中,上述命令安装CPU版本但可通过Metal框架间接利用GPU加速。未来版本将提供更直接的支持。

FunASR安装

从源码安装FunASR,确保适配本地环境:

git clone https://gitcode.com/GitHub_Trending/fun/FunASR && cd FunASR
pip3 install -e ./ -i https://mirror.sjtu.edu.cn/pypi/web/simple

安装过程中如遇到架构相关错误(如_cffi_backend架构不兼容),可执行以下命令修复:

pip uninstall cffi pycparser
ARCHFLAGS="-arch arm64" pip install cffi pycparser --compile --no-cache-dir

GPU加速配置

设备检测与配置

FunASR通过device_funcs.py模块实现设备管理,确保在M系列芯片上正确识别并利用GPU资源:

设备管理源码中的to_device函数负责将数据递归迁移到目标设备,支持Metal框架:

def to_device(data, device=None, dtype=None, non_blocking=False, copy=False):
    # 递归处理各种数据类型,确保正确迁移到指定设备
    if isinstance(data, torch.Tensor):
        return data.to(device, dtype, non_blocking, copy)
    # ... 其他数据类型处理

模型优化参数设置

修改运行时配置,启用GPU加速。以Paraformer模型为例,在启动服务时添加GPU相关参数:

cd runtime/python/websocket
python funasr_wss_server.py --port 10095 --device mps

说明:--device mps参数指定使用Metal Performance Shaders (MPS)后端,利用Apple Silicon的GPU算力。

实战案例:离线文件转写服务部署

服务部署流程

使用FunASR提供的一键部署工具,快速搭建支持GPU加速的离线文件转写服务:

# 下载部署脚本
curl -O https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/shell/funasr-runtime-deploy-offline-cpu-zh.sh;

# 执行部署,启用GPU加速
sudo bash funasr-runtime-deploy-offline-cpu-zh.sh install --workspace ./funasr-runtime-resources --enable-gpu

部署架构如图所示:

离线服务架构

客户端测试

部署完成后,使用Python客户端测试GPU加速效果:

python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "../audio/asr_example.wav"

性能对比

在M1 Max芯片上,启用GPU加速后,语音识别速度提升约40%,具体 benchmark 数据可参考性能测试报告

常见问题与解决方案

架构不兼容错误

问题:安装过程中出现incompatible architecture错误。
解决方案:重新编译相关依赖,指定ARM架构:

ARCHFLAGS="-arch arm64" pip install <package> --compile --no-cache-dir

GPU内存不足

问题:处理长音频时出现out of memory错误。
解决方案:调整批处理大小或启用模型量化:

# 在启动命令中添加量化参数
python funasr_wss_server.py --port 10095 --device mps --quantize True

Metal后端支持问题

问题:PyTorch不识别MPS设备。
解决方案:确保PyTorch版本≥1.12.0,并检查Xcode是否安装:

xcode-select --install

总结与展望

通过本文介绍的方法,Mac M系列芯片用户可轻松实现FunASR的GPU加速,显著提升语音识别性能。未来随着PyTorch对Apple Silicon支持的进一步完善,FunASR将提供更优化的GPU加速方案。

推荐参考以下资源深入学习:

如果您在使用过程中遇到问题,欢迎加入用户群反馈:

钉钉用户群 微信

希望本文能帮助您充分发挥Mac M系列芯片的算力优势,体验高效的语音识别服务!

【免费下载链接】FunASR A Fundamental End-to-End Speech Recognition Toolkit and Open Source SOTA Pretrained Models, Supporting Speech Recognition, Voice Activity Detection, Text Post-processing etc. 【免费下载链接】FunASR 项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR

更多推荐