使用whisper进行语音识别。利用 M1 芯片和 NVIDIA 显卡进行加速。

简介

项目官网:https://github.com/ggerganov/whisper.cpp

Whisper.cpp 是 OpenAI Whisper 模型的一个实现,可以在本地进行语音识别。

安装

  1. 克隆代码库:git clone https://github.com/ggerganov/whisper.cpp.git
  2. 构建:make

使用

  1. 下载模型

    ./models/download-ggml-model.sh small,small是模型的名称。可以在 Hugging Face 查看可用的模型,https://huggingface.co/ggerganov/whisper.cpp/tree/main。

    .en后缀的模型只支持英文。

  2. 识别

    ./main -m models/ggml-small.bin --language zh -f path/to/test.wav

注意:音频文件需要是单声道的,可以使用ffmpeg转换。ffmpeg -i b.mp4 -f wav -ar 16000 -ac 1 test.wavc

m1加速

可以利用 Mac 的 M1 芯片进行加速,试下来速度非常快。

  1. 创建python环境

    pip install ane_transformers
    pip install openai-whisper
    pip install coremltools
    
  2. 在环境变量中添加coremlc

    • 先安装xcode
    • PATH中添加/Applications/Xcode.app/Contents/Developer/usr/bin
  3. 构建

    • make clean
    • WHISPER_COREML=1 make -j
  4. 创建专用模型

    • 下载模型:./models/download-ggml-model.sh base
    • 转换模型:./models/generate-coreml-model.sh base
    • 这两个模型的名称要相同,就相当于把base模型转为coreml可以用的
  5. 运行:./main -m models/ggml-base.bin --language zh -f path/to/test.wav

cuda加速

如果有navida的显卡,也可以借助cuda来加速。我的环境是ubuntu22.04,显卡是NVIDIA GeForce GTX 1080

  1. ubuntu-drivers devices,查看gpu设备和驱动

    image-20230718140209877

    红框中的内容是可用的驱动。

  2. 安装驱动:sudo apt install nvidia-driver-535

  3. 重启计算机。

  4. 查看驱动是否安装成功:nvidia-smi

  5. 安装 Anaconda 或 Miniconda,方便管理 Python 环境,并方便安装 CUDA 和 cuDNN。

  6. 创建python环境,安装cuda和cudnn

    • conda install cudnn=7.6.0
    • conda install cudatoolkit=10.0.130
    • conda install cuda==11.4.0 -c nvidia
  7. 修改Makefile

    image-20230718140807020

    修改两处红框:

    • 添加上新建环境的lib文件夹。
    • 对于 GTX 1080 显卡,可以使用 sm_61,可以运行 nvcc --help 查看支持的 gpu-architecture
  8. make clean

  9. WHISPER_CUBLAS=1 make -j

  10. 成功运行

    image-20230718141244896

    如果配置成功,运行时会显示显卡信息。

可能遇到的问题

构建成功之后运行报错:*.so'没有找到

$LD_LIBRARY_PATH中添加上conda环境的lib 路径,就是Makefile里面的。

构建成功之后运行报错:CUDA error 35

CUDA error 35 at ggml-cuda.cu:1835: CUDA driver version is insufficient for CUDA runtime version

这个是cuda和显卡驱动不匹配,方法是卸载掉所有的驱动,然后安装最新的驱动。再查看一下匹配的cuda和cudnn版本。