Whisper 模型 C/C++ 版本移植
Whisper 被移植到 C/C++,支持在边缘设备和资源受限环境中部署语音识别
Whisper 被移植到 C/C++,支持在边缘设备和资源受限环境中部署语音识别
稳定版:v1.9.1 / 路线图
OpenAI Whisper 自动语音识别(ASR)模型的高性能推理实现:
无依赖的纯 C/C++ 实现
将 Apple Silicon 作为一等公民——通过 ARM NEON、Accelerate 框架、Metal 和 Core ML 进行优化
支持 x86 架构的 AVX 内在函数
支持 POWER 架构的 VSX 内在函数
混合 F16 / F32 精度
支持整数量化
运行时零内存分配
支持仅使用 CPU 进行推理
高效支持 NVIDIA GPU
支持摩尔线程 GPU
语音活动检测(VAD)
Mac OS(Intel 和 Arm)
Windows(MSVC 和 MinGW)
该模型的全部高层实现都包含在 whisper.h 和 whisper.cpp 中。其余代码属于 ggml 机器学习库。
如此轻量的模型实现可以轻松集成到不同的平台和应用程序中。例如,下面是一段在 iPhone 13 设备上运行该模型的视频——完全离线,在设备端运行:whisper.objc
你也可以轻松制作自己的离线语音助手应用程序:command
在 Apple Silicon 上,推理通过 Metal 完全运行在 GPU 上:
首先克隆仓库:
git clone https://github.com/ggml-org/whisper.cpp.git
进入该目录:
cd whisper.cpp
然后,下载一个已转换为 ggml 格式的 Whisper 模型。例如:
sh ./models/download-ggml-model.sh base.en
现在构建 whisper-cli 示例,并按如下方式转写音频文件:
# build the project
cmake -B build
cmake --build build -j --config Release
# transcribe an audio file
./build/bin/whisper-cli -f samples/jfk.wav
如需快速体验,只需运行 make base.en。
该命令会下载已转换为自定义 ggml 格式的 base.en 模型,并对 samples 文件夹中的所有 .wav 样本运行推理。
有关详细的使用说明,请运行:./build/bin/whisper-cli -h
请注意,whisper-cli 示例目前仅支持 16 位 WAV 文件,因此运行该工具前请务必转换输入文件。例如,可以像这样使用 ffmpeg:
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
如果你还想获取一些额外的音频样本进行试验,只需运行:
make -j samples
这会从 Wikipedia 下载更多音频文件,并通过 ffmpeg 将其转换为 16 位 WAV 格式。
你可以按如下方式下载并运行其他模型:
make -j tiny.en
make -j tiny
make -j base.en
make -j base
make -j small.en
make -j small
make -j medium.en
make -j medium
make -j large-v1
make -j large-v2
make -j large-v3
make -j large-v3-turbo
whisper.cpp 支持 POWER 架构,并包含可显著提升 POWER9/10 Linux 系统运行速度的代码,使其能够在降频运行的 Raptor Talos II 上实现快于实时速度的转写。请确保已安装 BLAS 软件包,并将标准 cmake 配置替换为:
# build with GGML_BLAS defined
cmake -B build -DGGML_BLAS=1
cmake --build build -j --config Release
./build/bin/whisper-cli [ .. etc .. ]
whisper.cpp 支持对 Whisper ggml 模型进行整数量化。量化模型需要的内存和磁盘空间更少,并且视硬件而定,可以得到更高效的处理。
以下是创建和使用量化模型的步骤:
# quantize a model with Q5_0 method
cmake -B build
cmake --build build -j --config Release
./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0
# run the examples as usual, specifying the quantized model file
./build/bin/whisper-cli -m models/ggml-base.en-q5_0.bin ./samples/gb0.wav
在 Apple Silicon 设备上,可以通过 Core ML,在 Apple Neural Engine(ANE)上执行编码器推理。这可以显著提升速度——与仅使用 CPU 执行相比,速度可提高 3 倍以上。以下是生成 Core ML 模型并将其用于 whisper.cpp 的说明:
安装创建 Core ML 模型所需的 Python 依赖项:pip install ane_transformers pip install openai-whisper pip install coremltools 为确保 coremltools 正常运行,请确认已安装 Xcode,并执行 xcode-select --install 安装命令行工具。建议使用 Python 3.11。建议使用 MacOS Sonoma(版本 14)或更新版本,因为较旧版本的 MacOS 可能会遇到转写幻觉问题。[可选] 建议在此步骤中使用 Python 版本管理系统,例如 Miniconda:要创建环境,请使用:conda create -n py311-whisper python=3.11 -y 要激活环境,请使用:conda activate py311-whisper
安装创建 Core ML 模型所需的 Python 依赖项:
pip install ane_transformers
pip install openai-whisper
pip install coremltools
为确保 coremltools 正常运行,请确认已安装 Xcode,并执行 xcode-select --install 安装命令行工具。
建议使用 Python 3.11。
建议使用 MacOS Sonoma(版本 14)或更新版本,因为较旧版本的 MacOS 可能会遇到转写幻觉问题。
[可选] 建议在此步骤中使用 Python 版本管理系统,例如 Miniconda:要创建环境,请使用:conda create -n py311-whisper python=3.11 -y 要激活环境,请使用:conda activate py311-whisper
要创建环境,请使用:conda create -n py311-whisper python=3.11 -y
要激活环境,请使用:conda activate py311-whisper
生成 Core ML 模型。例如,要生成 base.en 模型,请使用:./models/generate-coreml-model.sh base.en 这将生成 models/ggml-base.en-encoder.mlmodelc 文件夹
生成 Core ML 模型。例如,要生成 base.en 模型,请使用:
./models/generate-coreml-model.sh base.en
这将生成 models/ggml-base.en-encoder.mlmodelc 文件夹
构建支持 Core ML 的 whisper.cpp:# using CMake cmake -B build -DWHISPER_COREML=1 cmake --build build -j --config Release
构建支持 Core ML 的 whisper.cpp:
# using CMake
cmake -B build -DWHISPER_COREML=1
cmake --build build -j --config Release
像往常一样运行示例。例如:$ ./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav ... whisper_init_state: loading Core ML model from 'models/ggml-base.en-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 | ... 首次在设备上运行时速度较慢,因为 ANE 服务需要将 Core ML 模型编译为某种特定于设备的格式。后续运行会更快。
像往常一样运行示例。例如:
$ ./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav
...
whisper_init_state: loading Core ML model from 'models/ggml-base.en-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 |
...
首次在设备上运行时速度较慢,因为 ANE 服务需要将 Core ML 模型编译为某种特定于设备的格式。后续运行会更快。
有关 Core ML 实现的更多信息,请参阅 PR #566。
在支持 OpenVINO 的平台上,可以在 OpenVINO 支持的设备上执行编码器推理,包括 x86 CPU 以及 Intel GPU(集成和独立 GPU)。
这可以显著提升编码器的性能。以下是生成 OpenVINO 模型并将其用于 whisper.cpp 的说明:
首先,设置 Python 虚拟环境并安装 Python 依赖项。建议使用 Python 3.10。Windows:cd models python -m venv openvino_conv_env openvino_conv_env\Scripts\activate python -m pip install --upgrade pip pip install -r requirements-openvino.txt Linux 和 macOS:cd models python3 -m venv openvino_conv_env source openvino_conv_env/bin/activate python -m pip install --upgrade pip pip install -r requirements-openvino.txt
首先,设置 Python 虚拟环境并安装 Python 依赖项。建议使用 Python 3.10。
cd models
python -m venv openvino_conv_env
openvino_conv_env\Scripts\activate
python -m pip install --upgrade pip
pip install -r requirements-openvino.txt
cd models
python3 -m venv openvino_conv_env
source openvino_conv_env/bin/activate
python -m pip install --upgrade pip
pip install -r requirements-openvino.txt
生成 OpenVINO 编码器模型。例如,要生成 base.en 模型,请使用:python convert-whisper-to-openvino.py --model base.en。这将生成 ggml-base.en-encoder-openvino.xml/.bin IR 模型文件。建议将这些文件移至 ggml 模型所在的文件夹,因为这是 OpenVINO 扩展在运行时搜索的默认位置。
生成 OpenVINO 编码器模型。例如,要生成 base.en 模型,请使用:
python convert-whisper-to-openvino.py --model base.en
这将生成 ggml-base.en-encoder-openvino.xml/.bin IR 模型文件。建议将这些文件移至 ggml 模型所在的文件夹,因为这是 OpenVINO 扩展在运行时搜索的默认位置。
构建支持 OpenVINO 的 whisper.cpp:从发布页面下载 OpenVINO 软件包。推荐使用 2024.6.0 版本。所需库的即用型二进制文件可以在 OpenVINO Archives 中找到。将软件包下载并解压到开发系统后,通过加载 setupvars 脚本来配置所需环境。例如:Linux:source /path/to/l_openvino_toolkit_ubuntu22_2023.0.0.10926.b4452d56304_x86_64/setupvars.sh Windows(cmd):C:\Path\To\w_openvino_toolkit_windows_2023.0.0.10926.b4452d56304_x86_64\setupvars.bat 然后使用 cmake 构建项目:cmake -B build -DWHISPER_OPENVINO=1 cmake --build build -j --config Release
构建支持 OpenVINO 的 whisper.cpp:
从发布页面下载 OpenVINO 软件包。推荐使用 2024.6.0 版本。所需库的即用型二进制文件可以在 OpenVINO Archives 中找到。
将软件包下载并解压到开发系统后,通过加载 setupvars 脚本来配置所需环境。例如:
source /path/to/l_openvino_toolkit_ubuntu22_2023.0.0.10926.b4452d56304_x86_64/setupvars.sh
C:\Path\To\w_openvino_toolkit_windows_2023.0.0.10926.b4452d56304_x86_64\setupvars.bat
然后使用 cmake 构建项目:
cmake -B build -DWHISPER_OPENVINO=1
cmake --build build -j --config Release
像往常一样运行示例。例如:$ ./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav ... whisper_ctx_init_openvino_encoder: loading OpenVINO model from 'models/ggml-base.en-encoder-openvino.xml' whisper_ctx_init_openvino_encoder: first run on a device may take a while ... whisper_openvino_init: path_model = models/ggml-base.en-encoder-openvino.xml, device = GPU, cache_dir = models/ggml-base.en-encoder-openvino-cache whisper_ctx_init_openvino_encoder: OpenVINO model loaded system_info: n_threads = 4 / 8 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 | COREML = 0 | OPENVINO = 1 | ... 首次在 OpenVINO 设备上运行时会比较慢,因为 OpenVINO 框架会将 IR(中间表示)模型编译为特定于设备的“blob”。这个特定于设备的 blob 会被缓存,供下次运行使用。
像往常一样运行示例。例如:
$ ./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav
...
whisper_ctx_init_openvino_encoder: loading OpenVINO model from 'models/ggml-base.en-encoder-openvino.xml'
whisper_ctx_init_openvino_encoder: first run on a device may take a while ...
whisper_openvino_init: path_model = models/ggml-base.en-encoder-openvino.xml, device = GPU, cache_dir = models/ggml-base.en-encoder-openvino-cache
whisper_ctx_init_openvino_encoder: OpenVINO model loaded
system_info: n_threads = 4 / 8 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 | COREML = 0 | OPENVINO = 1 |
...
首次在 OpenVINO 设备上运行时会比较慢,因为 OpenVINO 框架会将 IR(中间表示)模型编译为特定于设备的“blob”。这个特定于设备的 blob 会被缓存,供下次运行使用。
有关 OpenVINO 实现的更多信息,请参阅 PR #1037。
使用 NVIDIA 显卡时,可以通过 cuBLAS 和自定义 CUDA 内核在 GPU 上高效处理模型。首先,请确保已安装 cuda:https://developer.nvidia.com/cuda-downloads
现在构建支持 CUDA 的 whisper.cpp:
cmake -B build -DGGML_CUDA=1
cmake --build build -j --config Release
对于较新的 NVIDIA GPU(RTX 5000 系列),则使用:
cmake -B build -DGGML_CUDA=1 -DCMAKE_CUDA_ARCHITECTURES="86"
cmake --build build -j --config Release
这是一种跨厂商解决方案,可让你在 GPU 上加速工作负载。首先,请确保显卡驱动程序支持 Vulkan API。
现在构建支持 Vulkan 的 whisper.cpp:
cmake -B build -DGGML_VULKAN=1
cmake --build build -j --config Release
使用 AMD GPU 时,可以通过 HIP/ROCm 加速处理。首先,请确保已安装 ROCm。
现在构建支持 HIP 的 whisper.cpp:
cmake -B build -DGGML_HIP=1 -DAMDGPU_TARGETS="gfx1201"
cmake --build build -j --config Release
将 gfx1201 替换为你的 GPU 架构。可以使用以下命令查找:
rocminfo | grep "gfx"
常见架构:gfx1100(RX 7900 XTX)、gfx1101(RX 7800 XT)、gfx1201(RX 9070 XT)。对于架构不同的多块 GPU,请使用:-DAMDGPU_TARGETS="gfx1100;gfx1201"。
通过 OpenBLAS 提供 BLAS CPU 支持
可以通过 OpenBLAS 在 CPU 上加速编码器处理。首先,请确保已安装 openblas:https://www.openblas.net/
现在构建支持 OpenBLAS 的 whisper.cpp:
cmake -B build -DGGML_BLAS=1
cmake --build build -j --config Release
Ascend NPU 通过 CANN 和 AI Core 提供推理加速。
首先,检查你的 Ascend NPU 设备是否受支持:
然后,请确保已安装 CANN 工具包。建议使用最新版本的 CANN。
现在构建支持 CANN 的 whisper.cpp:
cmake -B build -DGGML_CANN=1
cmake --build build -j --config Release
像往常一样运行推理示例,例如:
./build/bin/whisper-cli -f samples/jfk.wav -m models/ggml-base.en.bin -t 8
如果在使用 Ascend NPU 设备时遇到问题,请创建一个带有 [CANN] 前缀/标签的 issue。
如果你已成功在 Ascend NPU 设备上运行,请协助更新“已验证设备”表格。
Moore Threads GPU 支持
使用 Moore Threads 显卡时,可以通过 muBLAS 和自定义 MUSA 内核在 GPU 上高效处理模型。首先,请确保已安装 MUSA SDK rc4.2.0:https://developer.mthreads.com/sdk/download/musa?equipment=&os=&driverVersion=&version=4.2.0
现在构建支持 MUSA 的 whisper.cpp:
cmake -B build -DGGML_MUSA=1
cmake --build build -j --config Release
也可以指定 Moore Threads GPU 的架构。例如,如果你使用 MTT S80 GPU,可以按如下方式指定架构:
cmake -B build -DGGML_MUSA=1 -DMUSA_ARCHITECTURES="21"
cmake --build build -j --config Release
FFmpeg 支持(仅限示例)
默认情况下,本仓库中的示例使用 miniaudio 库解码音频文件。部分示例也可以使用 FFmpeg 进行解码,从而支持更多格式。要启用此功能,请在构建时使用 WHISPER_COMMON_FFMPEG。
首先,需要安装所需的库:
# Debian/Ubuntu
sudo apt install libavcodec-dev libavformat-dev libavutil-dev
# RHEL/Fedora
sudo dnf install libavcodec-free-devel libavformat-free-devel libavutil-free-devel
然后可以按如下方式构建项目:
cmake -B build -D WHISPER_COMMON_FFMPEG=yes
cmake --build build
运行以下示例以确认其正常工作:
# Convert an audio file to Opus format
ffmpeg -i samples/jfk.wav jfk.opus
# Transcribe the audio file
./build/bin/whisper-cli --model models/ggml-base.en.bin --file jfk.opus
必须在系统上安装并运行 Docker。
创建一个用于存储大型模型和中间文件的文件夹(例如 /whisper/models)。
我们为本项目提供了多个 Docker 镜像:
ghcr.io/ggml-org/whisper.cpp:main:此镜像包含主可执行文件以及 curl 和 ffmpeg。(平台:linux/amd64、linux/arm64)
ghcr.io/ggml-org/whisper.cpp:main-cuda:与 main 相同,但编译时启用了 CUDA 支持。(平台:linux/amd64)
ghcr.io/ggml-org/whisper.cpp:main-musa:与 main 相同,但编译时启用了 MUSA 支持。(平台:linux/amd64)
ghcr.io/ggml-org/whisper.cpp:main-vulkan:与 main 相同,但编译时启用了 Vulkan 支持。(平台:linux/amd64)
# download model and persist it in a local folder
docker run -it --rm \
-v path/to/models:/models \
whisper.cpp:main "./models/download-ggml-model.sh base /models"
# transcribe an audio file
docker run -it --rm \
-v path/to/models:/models \
-v path/to/audios:/audios \
whisper.cpp:main "whisper-cli -m /models/ggml-base.bin -f /audios/jfk.wav"
docker run -it --rm
-v path/to/models:/models
whisper.cpp:main "whisper-cli -m /models/ggml-base.bin -f ./samples/jfk.wav"
docker run -it --rm -p "8080:8080"
-v path/to/models:/models
whisper.cpp:main "whisper-server --host 127.0.0.1 -m /models/ggml-base.bin"
docker run -it --rm
-v path/to/models:/models
whisper.cpp:main "whisper-bench -m /models/ggml-small.en.bin -t 4"
使用 Conan 安装
你可以使用 Conan 安装 whisper.cpp 的预构建二进制文件,也可以从源代码构建。使用以下命令:
conan install --requires="whisper-cpp/[*]" --build=missing
有关如何使用 Conan 的详细说明,请参阅 Conan 文档。
实时音频输入示例
这是一个对麦克风音频执行实时推理的简单示例。`stream` 工具每半秒对音频进行一次采样,并持续运行转录。更多信息请参阅 issue #10。你需要安装 sdl2,才能使其正常工作。
cmake -B build -DWHISPER_SDL2=ON cmake --build build -j --config Release ./build/bin/whisper-stream -m ./models/ggml-base.en.bin -t 8 --step 500 --length 5000
按置信度着色
添加 `--print-colors` 参数后,将使用一种实验性的颜色编码策略打印转录文本,以突出显示置信度较高或较低的单词:
./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/gb0.wav --print-colors
控制生成文本分段的长度(实验性)
例如,要将每行长度限制为最多 16 个字符,只需添加 `-ml 16`:
$ ./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f ./samples/jfk.wav -ml 16
whisper_model_load: loading model from './models/ggml-base.en.bin' ... system_info: n_threads = 4 / 10 | AVX2 = 0 | AVX512 = 0 | NEON = 1 | FP16_VA = 1 | WASM_SIMD = 0 | BLAS = 1 |
main: processing './samples/jfk.wav' (176000 samples, 11.0 sec), 4 threads, 1 processors, lang = en, task = transcribe, timestamps = 1 ...
[00:00:00.000 --> 00:00:00.850] And so my [00:00:00.850 --> 00:00:01.590] fellow [00:00:01.590 --> 00:00:04.140] Americans, ask [00:00:04.140 --> 00:00:05.660] not what your [00:00:05.660 --> 00:00:06.840] country can do [00:00:06.840 --> 00:00:08.430] for you, ask [00:00:08.430 --> 00:00:09.440] what you can do [00:00:09.440 --> 00:00:10.020] for your [00:00:10.020 --> 00:00:11.000] country.
单词级时间戳(实验性)
可以使用 `--max-len` 参数获取单词级时间戳。只需使用 `-ml 1`:
$ ./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f ./samples/jfk.wav -ml 1
whisper_model_load: loading model from './models/ggml-base.en.bin' ... system_info: n_threads = 4 / 10 | AVX2 = 0 | AVX512 = 0 | NEON = 1 | FP16_VA = 1 | WASM_SIMD = 0 | BLAS = 1 |
main: processing './samples/jfk.wav' (176000 samples, 11.0 sec), 4 threads, 1 processors, lang = en, task = transcribe, timestamps = 1 ...
[00:00:00.000 --> 00:00:00.320] [00:00:00.320 --> 00:00:00.370] And [00:00:00.370 --> 00:00:00.690] so [00:00:00.690 --> 00:00:00.850] my [00:00:00.850 --> 00:00:01.590] fellow [00:00:01.590 --> 00:00:02.850] Americans [00:00:02.850 --> 00:00:03.300] , [00:00:03.300 --> 00:00:04.140] ask [00:00:04.140 --> 00:00:04.990] not [00:00:04.990 --> 00:00:05.410] what [00:00:05.410 --> 00:00:05.660] your [00:00:05.660 --> 00:00:06.260] country [00:00:06.260 --> 00:00:06.600] can [00:00:06.600 --> 00:00:06.840] do [00:00:06.840 --> 00:00:07.010] for [00:00:07.010 --> 00:00:08.170] you [00:00:08.170 --> 00:00:08.190] , [00:00:08.190 --> 00:00:08.430] ask [00:00:08.430 --> 00:00:08.910] what [00:00:08.910 --> 00:00:09.040] you [00:00:09.040 --> 00:00:09.320] can [00:00:09.320 --> 00:00:09.440] do [00:00:09.440 --> 00:00:09.760] for [00:00:09.760 --> 00:00:10.020] your [00:00:10.020 --> 00:00:10.510] country [00:00:10.510 --> 00:00:11.000] .
通过 tinydiarize 进行说话人分段(实验性)
有关此方法的更多信息,请参阅:#1058
./models/download-ggml-model.sh small.en-tdrz
./build/bin/whisper-cli -f ./samples/a13.wav -m ./models/ggml-small.en-tdrz.bin -tdrz ... main: processing './samples/a13.wav' (480000 samples, 30.0 sec), 4 threads, 1 processors, lang = en, task = transcribe, tdrz = 1, timestamps = 1 ... ... [00:00:00.000 --> 00:00:03.800] Okay Houston, we've had a problem here. [SPEAKER_TURN] [00:00:03.800 --> 00:00:06.200] This is Houston. Say again please. [SPEAKER_TURN] [00:00:06.200 --> 00:00:08.260] Uh Houston we've had a problem. [00:00:08.260 --> 00:00:11.320] We've had a main beam up on a volt. [SPEAKER_TURN] [00:00:11.320 --> 00:00:13.820] Roger main beam interval. [SPEAKER_TURN] [00:00:13.820 --> 00:00:15.100] Uh uh [SPEAKER_TURN] [00:00:15.100 --> 00:00:18.020] So okay stand, by thirteen we're looking at it. [SPEAKER_TURN] [00:00:18.020 --> 00:00:25.740] Okay uh right now uh Houston the uh voltage is uh is looking good um. [00:00:27.620 --> 00:00:29.940] And we had a a pretty large bank or so.
生成卡拉 OK 风格的视频(实验性)
`whisper-cli` 示例支持输出卡拉 OK 风格的视频,其中当前读到的单词会被高亮显示。使用 `-owts` 参数,然后运行生成的 bash 脚本。此功能要求已安装 ffmpeg。
下面是几个“典型”示例:
./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f ./samples/jfk.wav -owts source ./samples/jfk.wav.wts ffplay ./samples/jfk.wav.mp4
./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f ./samples/mm0.wav -owts source ./samples/mm0.wav.wts ffplay ./samples/mm0.wav.mp4
./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f ./samples/gb0.wav -owts source ./samples/gb0.wav.wts ffplay ./samples/gb0.wav.mp4
不同模型的视频对比
使用 `scripts/bench-wts.sh` 脚本生成以下格式的视频:
./scripts/bench-wts.sh samples/jfk.wav ffplay ./samples/jfk.wav.all.mp4
为了客观比较不同系统配置下的推理性能,请使用 whisper-