折腾一下whisper语音识别


最近好奇抖音上的“录音转文字翻转视频”是如何实现的。

背景

研究了一下,发现常见的做法是使用剪映的一键生成功能:
它会先对录音进行语音转文字,得到字幕文件,然后根据字幕渲染出文字翻转的动态效果。
不过我尝试后觉得效果并不理想:

  • 这是付费功能
  • 可定制性较差,生成效果比较随机;
  • 难以满足一些定制化需求。

当然,也有 AE 的 Typemonkey 插件(或类似插件)可以生成翻转大字动画。流程是:

  1. 将语音先转成字幕文字;
  2. 导入 AE 插件生成动画;
  3. 手动调整字幕在时间轴上的位置;
    但这种方式在长文本时生成非常慢,渲染过程冗长,无法快速预览,对效率不太友好,所以也放弃了。

我的思路

于是我想到:直接用 Whisper 语音识别生成字幕+时间戳,再利用 HTML Canvas 做动画渲染。
HTML 动画部分基本靠 AI 辅助实现,不算难,重点放在本地部署 Whisper 上。


Whisper 部署

1. Python 版本 Whisper

最先尝试的是 Python 版 Whisper(openai/whisper):

  • 踩坑点:CUDA、PyTorch、显卡驱动以及 Whisper 版本兼容性。
  • 小模型:识别速度快,但准确率低;
  • 大模型(如 large):准确率高,但显存占用极大(10G+),速度非常慢。
    举例:10 多分钟的音频需要几十分钟才能识别。
    ➡️ 体验不佳,最终放弃。

2. C++ 版本 Whisper(推荐)

后来发现了 Whisper.cppggml-org/whisper.cpp),支持 GPU 编译,效率提升显著。
实测:10 分钟的音频只需 2 分钟以内 就能完成识别。

安装步骤(以 Windows + NVIDIA 显卡为例):

  1. 安装 CUDA Toolkit(需勾选 Visual Studio 集成)。
  2. 安装 Visual Studio 2022(Community 版即可,需含 C++ 桌面开发工具)。
  3. 克隆仓库:
    git clone https://github.com/ggml-org/whisper.cpp
    cd whisper.cpp
    
  4. 使用 CMake + Visual Studio 编译 GPU 版本:
    cmake -B build -DGGML_CUDA=1
    cmake --build build --config Release
    
  5. 下载 Whisper 模型(如 ggml-medium.binggml-large-v3.bin):
  6. 运行测试:
    .\build\bin\Release\main.exe -m models\ggml-medium.bin -f test.wav --output-srt
    
    会生成带有时间戳的 .srt 字幕文件。

踩坑提示

  • 如果 CUDA 安装时没勾选 VS 集成,CMake 编译会一直失败,提示找不到CUDA,哪怕他在路径中;
  • Linux 下编译相对顺畅,Windows 环境更容易遇坑。

文章作者: 青椒
版权声明: 本笔记所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 青椒 !
 本篇
折腾一下whisper语音识别 折腾一下whisper语音识别
最近好奇抖音上的“录音转文字翻转视频”是如何实现的。 背景研究了一下,发现常见的做法是使用剪映的一键生成功能:它会先对录音进行语音转文字,得到字幕文件,然后根据字幕渲染出文字翻转的动态效果。不过我尝试后觉得效果并不理想: 这是付费功能
2025-08-22 青椒
下一篇 
LUA与C++交互demo编写 LUA与C++交互demo编写
简介主要搭建了一个最最简单的lua与c++交互的demo。可以从demo中学习到,如何引入lua头文件、库目录。如何实现c++调用lua代码,以及lua调用c++代码。 目录结构预览通常在创建项目时,需要对项目有个大概设想,东西怎么存放是个
2025-07-19 青椒
  目录