Whisper 是 OpenAI 发布的一款强大的语音识别模型,能够将语音转换为文本。它在多个平台上都有支持,而 whisper.cpp 是 Whisper 模型的一个 C++ 实现,旨在提高推理速度和效率,特别是在低资源环境下。
如果你是 macOS 用户,并且想要在本地使用 whisper.cpp 进行语音识别,本文将教你如何安装和使用 whisper.cpp。
1. 克隆 whisper.cpp 仓库
首先,我们需要从 GitHub 克隆 whisper.cpp 仓库。打开终端并运行以下命令:
git clone https://github.com/ggerganov/whisper.cpp.git
这将把 whisper.cpp 仓库克隆到本地。接下来,进入该目录:
cd whisper.cpp
2. 安装依赖
whisper.cpp 项目使用 CMake 进行构建(编译)。你需要先安装一些必要的工具,比如 CMake 和 Make,它们可以通过 Homebrew 安装:
brew install cmake make
3. 编译 whisper.cpp
现在你已经准备好编译项目了。在 whisper.cpp 目录中,运行以下命令来构建项目:
cmake -B build
cmake --build build --config Release
这样会在/build/bin/
目录下面 生成一个whisper-cli
可执行文件
4. 下载 Whisper 模型
whisper.cpp 需要使用预训练的 Whisper 模型进行语音识别。你可以从 OpenAI 提供的链接下载模型文件:
可以从下面两个链接查询下载:
https://huggingface.co/ggerganov/whisper.cpp/tree/main
下载后,将模型文件放到 whisper.cpp 目录下(或放到其子目录models中)。
Model Disk SHA
tiny 75 MiB bd577a113a864445d4c299885e0cb97d4ba92b5f
tiny.en 75 MiB c78c86eb1a8faa21b369bcd33207cc90d64ae9df
base 142 MiB 465707469ff3a37a2b9b8d8f89f2f99de7299dac
base.en 142 MiB 137c40403d78fd54d454da0f9bd998f78703390c
small 466 MiB 55356645c2b361a969dfd0ef2c5a50d530afd8d5
small.en 466 MiB db8a495a91d927739e50b3fc1cc4c6b8f6c2d022
small.en-tdrz 465 MiB b6c6e7e89af1a35c08e6de56b66ca6a02a2fdfa1
medium 1.5 GiB fd9727b6e1217c2f614f9b698455c4ffd82463b4
medium.en 1.5 GiB 8c30f0e44ce9560643ebd10bbe50cd20eafd3723
large-v1 2.9 GiB b1caaf735c4cc1429223d5a74f0f4d0b9b59a299
large-v2 2.9 GiB 0f4c8e34f21cf1a914c59d8b3ce882345ad349d6
large-v2-q5_0 1.1 GiB 00e39f2196344e901b3a2bd5814807a769bd1630
large-v3 2.9 GiB ad82bf6a9043ceed055076d0fd39f5f186ff8062
large-v3-q5_0 1.1 GiB e6e2ed78495d403bef4b7cff42ef4aaadcfea8de
large-v3-turbo 1.5 GiB 4af2b29d7ec73d781377bfd1758ca957a807e941
large-v3-turbo-q5_0 547 MiB e050f7970618a659205450ad97eb95a18d69c9ee
除非模型名称包含.en,否则模型是多语言的。以-Q5_0结尾的模型进行了量化。有关型号的更多信息,请访问上游(OpenAI/Whisper)。上面的列表是由download-ggml-model.sh脚本支持的模型子集,但更多的内容可在https://huggingface.co/ggerganov/whisper.cpp/tree/main和其他地方获得。
一般来说模型越大越准确,但是可能速度可能会慢一些。这里推荐使用medium模型,你可以通过shell脚本进行下载或者手动下载:
cd whisper.cpp
bash ./models/download-ggml-model.sh medium
下载完成后,会在项目的models目录保存ggml-medium.bin模型文件,至此,Whisper.cpp就配置好了。
5.准备格式
whisper-cli 目前仅适用于 16 位 WAV 文件,因此请确保在运行该工具之前转换输入。例如,您可以ffmpeg这样使用:
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
如果你的文件时视频文件,例如mov类型,使用下面命令提前音频文件
ffmpeg -i input.mov -vn -acodec pcm_s16le -ar 16000 -ac 1 output.wav
6. 使用 whisper.cpp 进行语音识别
一切准备就绪后,你可以通过运行以下命令来使用 whisper.cpp 对音频文件进行语音识别:
./main -f <audio-file> -m <model-path>
例如:
./main -f /path/to/your/audio.wav -m /path/to/your/whisper-large.bin
默认情况下,识别结果只会打印在终端上。如果你需要输出字幕文件(如 SRT、VTT 或 TXT 格式),可以添加以下参数:-osrt -otxt -ovtt 这会在音频的同级目录下生成 srt,txt,vtt 文件。
1.针对英文语音(medium.en 模型):
./main -m models/ggml-medium.bin -f ~/Downloads/white.wav -osrt -otxt -ovtt
2.针对中文语音(large 模型)
./main -m models/ggml-medium.bin -l zh -f ~/Downloads/white.wav -osrt -otxt -ovtt
6. 调整参数
whisper.cpp 提供了多个命令行选项来调整语音识别的行为。以下是一些常用的选项:
• -f
例如,如果你想指定语言为英语并使用 4 个线程,可以运行:
./main -f /path/to/your/audio.wav -m /path/to/your/whisper-large.bin -l en -t 4
7. 性能优化
如果你使用的是苹果 M1 或 M2 芯片,whisper.cpp 会自动利用硬件加速(例如 Metal 或 ARM 架构)来提高推理性能。但是,若想要进一步优化,你可以尝试在 CMake 构建过程中启用特定的优化选项,例如:
cmake .. -DAPPLE_METAL=ON
make
这将启用对 macOS Metal API 的支持,可以更有效地利用 GPU 来加速模型推理。
8.常见错误
问题:长音频文件识别错误
有时候,处理较长的音频文件(> 20 分钟)时,可能会遇到识别错误,导致输出重复的句子。例如:
你好,今天
谢谢
谢谢
谢谢
akaaka
ddw
ddw
ddw
ddw
看到有这两种方法解决,但是没有验证:
1.用 –condition_on_previous_text False,但它也可能導致輸出品質比較差 2.有人說用 –temperature_increment_on_fallback 比 1 好 3.尝试把视频剪切成短视频来完成。
github 有很多讨论,但是目前还没有完美的解决办法。
9.进一步处理
下面你可以使用aegisub等工具来编辑字幕,使其符合你的要求,然后使用ffmpeg嵌入到视频中。
结语
通过以上步骤,你应该可以在 macOS 上成功使用 whisper.cpp 进行语音识别。这为开发人员和研究人员提供了一个高效、轻量的本地语音转文本解决方案,不需要依赖云服务。
如果你在使用过程中遇到任何问题,可以参考 whisper.cpp 的 GitHub 页面 获取更多帮助。希望这篇教程对你有所帮助!
关注我获取更多资讯


ffmpeg -i input.mov -i subtitles.srt -c:v copy -c:a copy -c:s mov_text output.mov