限时福利领取


背景痛点

在 Windows 上部署 FunASR 时,开发者常遇到以下典型问题:

  • 编译器兼容性:官方依赖的 PyTorch 1.8+ 需要 MSVC 2019,但默认安装易缺失 C++ 编译组件
  • CUDA 版本陷阱:FunASR 对 CUDA 11.3 有强依赖,与主流深度学习框架的 CUDA 12 需求冲突
  • 依赖缺失:部分音频处理库(如 kaldi-native-fbank)无预编译 Windows wheel 包

环境配置冲突示意图

技术方案

1. 创建 Conda 隔离环境

# 创建 Python 3.8 环境
conda create -n funasr_env python=3.8 -y
conda activate funasr_env

# 安装基础依赖
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.3 -c pytorch

2. CUDA 与 cuDNN 配置

  1. 从 NVIDIA 官网下载 CUDA 11.3 和 cuDNN 8.2.1
  2. 将 cuDNN 的 bin/include/lib 文件复制到 CUDA 安装目录
  3. 设置系统环境变量:
    CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3
    PATH 添加 %CUDA_PATH%\bin

3. 手动编译关键依赖

# 安装编译工具链
conda install -c conda-forge cmake make gcc

git clone https://github.com/alibaba-damo-academy/kaldi-native-fbank
cd kaldi-native-fbank

# 修改 setup.py 避免 MSVC 链接错误
sed -i "s/'-std=c++14',//g" setup.py
python setup.py install

编译过程示意图

避坑指南

AVX 指令集检测

import cpuinfo
print(cpuinfo.get_cpu_info()['flags'])  # 检查是否有 avx2 标志

内存优化策略

  • 音频分块处理示例:
    from funasr import AutoModel
    model = AutoModel(model="paraformer-zh")
    
    # 每 20 秒分块处理
    for chunk in split_audio("long.wav", chunk_size=20):
        res = model.generate(input=chunk)

验证测试

性能对比数据

| 线程数 | GPU 显存占用 | 识别延迟(s) | |--------|--------------|-------------| | 1 | 2.1GB | 1.8 | | 4 | 3.5GB | 0.9 |

测试音频示例

# test_audio.wav 内容:"今天天气不错"
result = model.generate(input="test_audio.wav")
print(result[0]["text"])  # 应输出完整文本

经验总结

通过 Conda 严格隔离环境后,再配合手动编译关键组件,可以解决 90% 的 Windows 部署问题。建议将上述步骤封装成 bat 脚本,后续部署只需:

./setup_funasr.bat  # 包含所有自动化配置

遇到链接错误时,优先检查 CUDA 版本和 MSVC 编译器路径是否被其他程序污染。

Logo

音视频技术社区,一个全球开发者共同探讨、分享、学习音视频技术的平台,加入我们,与全球开发者一起创造更加优秀的音视频产品!

更多推荐