loading

Loading

请输入关键字开始搜索
    首页 AI专栏开源部署

    whisper.cpp安装

    分类:开源部署
    字数: (3953)
    阅读: (312)
    0

    1. 背景

    whisper是OpenAI官方发布的一款开源语音识别大模型,使用python实现。可以将语音信息转化为文本信息。其实也叫做ASR"自动语音识别”(Automatic Speech Recognition)。本文主要做的工作如下:

    • 搭建whisper服务,和dify进行语音转写配合
    • 针对MacOS进行优化编写
      本文主要是用whisper.cpp,两者的区别是因为whipser官方默认功能比较重,whisper.cpp是社区将该模型移植到了C/C++版本,针对CPU和性能做了大量优化,区别如下:
    对比项目 whisper.cpp whisper(官方实现)
    语言与依赖 - 纯 C/C++ 实现 - 几乎不依赖第三方深度学习库,安装轻量 - Python + PyTorch(或其他深度学习框架) - 依赖完整的深度学习环境(GPU 驱动、Python 环境等)
    运行平台/环境 - 可在 Linux、macOS、Windows、移动端等多平台编译运行 - 针对 CPU 优化,依赖 SIMD 指令集 - 一般在有 GPU(NVIDIA CUDA)的服务器/工作站或本地带 GPU 的环境中运行 - 也可在 CPU 上跑,但速度相对较慢
    性能特点 - 专门针对 CPU 进行优化(AVX/AVX2/NEON 等) - 在较低端硬件上也有不错的推理速度 - 在 GPU 上推理速度快 - 在 CPU 上速度相对更慢,除非硬件配置较高或者模型规模小
    使用方式 - 提供命令行工具和 C/C++ API - 无需安装 Python,即可离线编译使用 - 通过 Python 脚本或 CLI 使用 - 需要安装 PyTorch、依赖 Python 生态
    模型兼容性 - 支持官方的 Whisper 模型权重(需转换为 ggml 格式) - 部分模型可进行量化(如 int8、int4) - 直接使用官方发布的 .pt 或 .bin 模型权重
    部署场景 - 适用于资源受限或不便部署 Python/PyTorch 的场景 - 可跨平台、嵌入式、本地离线语音转录等 - 适用于有 GPU 环境的服务器或工作站,处理大批量音频数据 - 与 Python 生态(如深度学习工具、pipeline 等)配合度更高
    社区与生态 - 由社区维护,活跃度较高 - 不断出现新的优化分支、量化方案等 - 由 OpenAI 发布,社区广泛使用 - 生态成熟,有众多第三方封装库、扩展
    适用人群 - C++/系统开发者或需要轻量级部署的用户 - 不想依赖 Python 环境、希望本地 CPU 直接推理 - Python/深度学习开发者 - 需要与 PyTorch 兼容或直接在研究、生产环境中使用可扩展的深度学习框架

    github的官方网址:

    https://github.com/ggerganov/whisper.cpp

    2. 安装

    2.1 基础环境搭建

    首先进行github文件下载并进入文件夹:

    git clone https://github.com/ggerganov/whisper.cpp.git
    cd whisper.cpp

    根据需要下载whisper的模型:

    sh ./models/download-ggml-model.sh base

    其注意,不同的模型,需要的内存和大小不同,占用的存储和内存如下,一般来说使用small和base基本上也足够了。

    Model Disk Mem
    tiny 75 MiB ~273 MB
    base 142 MiB ~388 MB
    small 466 MiB ~852 MB
    medium 1.5 GiB ~2.1 GB
    large 2.9 GiB ~3.9 GB

    注意,本下载需要从huggingface.co下载,如果无法下载,可以从官网下载
    从官网下载,官网地址:https://ggml.ggerganov.com/

    cd models
    wget https://ggml.ggerganov.com/ggml-model-whisper-base.bin

    下载下来的文件进行MD5校验,可以看到和huggingface上的md5一致。

     shasum -a 1 ggml-model-whisper-base.bin
    
    >>465707469ff3a37a2b9b8d8f89f2f99de7299dac  ggml-model-whisper-base.bin

    2.2 MacOS环境优化

    针对苹果的M系列芯片,whisper.cpp进行了单独的优化,可以比单纯CPU速度更快。在安装之前保证:

    • xcode正确安装,如果没有安装,在appstore上安装,并使用xcode-select --install进行工具安装
    • 使用python3.10
    • MacOS的版本大于14.0
      开始进行虚拟环境搭建:

    安装homebrew

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    安装miniconda

    brew install --cask miniconda

    创建虚拟环境

    conda create -n py310-whisper python=3.10 -y

    激活虚拟环境

    conda activate py310-whisper

    如果报错`CondaError: Run 'conda init' before 'conda activate'`,是因为`.bashrc`中没有初始化,执行:

    执行看是否有激活环境

    cat ~/.zshrc | grep conda
    cat ~/.bash_profile | grep conda

    如果出现如下内容,则说明有添加,需要重新执行一下,如果没有,需要手动添加到bash_profile下,然后再激活虚拟环境

    >>> conda initialize >>> conda_setup="$('/opt/homebrew/Caskroom/miniforge/base/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" eval "$__conda_setup" unset conda_setup # <<< conda initialize <<<

    如果有,需要执行一下

    source ~/.bash_profile

    如果没有,手动添加执行

    echo 'eval "$(/opt/homebrew/Caskroom/miniforge/base/bin/conda shell.zsh hook)"' >> ~/.zshrc
    source ~/.zshrc

    激活虚拟环境后进行环境安装:
    ```bash
    pip install ane_transformers
    pip install openai-whisper
    pip install coremltools

    开始针对Core ML进行模型优化,比如刚刚下载的是base,那么执行:

    ./models/generate-coreml-model.sh base

    执行后会生成models/ggml-base-encoder.mlmodelc文件夹,然后开始进行针对mac优化的编译:

    # using CMake,其中DWHISPER_COREML=1表示对macos的优化
    cmake -B build -DWHISPER_COREML=1
    cmake --build build -j --config Release

    编译完毕后,可以运行sample:

    $ ./build/bin/whisper-cli -m models/ggml-base.bin -f samples/jfk.wav
    
    ...
    
    whisper_init_state: loading Core ML model from 'models/ggml-base-encoder.mlmodelc'
    whisper_init_state: first run on a device may take a while ...
    whisper_init_state: Core ML model loaded
    
    system_info: n_threads = 4 / 10 | AVX = 0 | AVX2 = 0 | AVX512 = 0 | FMA = 0 | NEON = 1 | ARM_FMA = 1 | F16C = 0 | FP16_VA = 1 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 0 | VSX = 0 | COREML = 1 |
    
    ...

    如果运行成功则表示运行成功了。
    其中以目前whisper-cli仅支持16-bit wav格式的音频文件,如果不是此类文件比如是mp3文件,则需要使用ffmpeg进行转化。比如:

    ffmpeg -i test.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
    本文发布于2025年03月02日16:21,已经过了301天,若内容或图片失效,请留言反馈
    文章出处: 求索空间
    文章链接: https://blog.askerlab.com/whisper_install
    评论列表:
    empty

    暂无评论