问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C++实现语音识别(Whisper.cpp)入门教程

创作时间:
作者:
@小白创作中心

C++实现语音识别(Whisper.cpp)入门教程

引用
CSDN
1.
https://blog.csdn.net/hhy321/article/details/139890557

本文将介绍如何使用C++实现语音识别,具体使用的是OpenAI的Whisper模型的C/C++端口——whisper.cpp。文章将详细讲解从环境搭建、模型下载到实际测试的全过程。

1. 简介

Whisper 是一种通用语音识别模型。它是在各种音频的大型数据集上训练的,也是一个多任务模型,可以执行多语言语音识别、语音翻译和语言识别。

2. 环境准备

2.1 Visual Studio 2017

请访问 Visual Studio 下载页面 进行安装。

2.2 CMake

请访问 CMake 下载页面 进行安装。

3. whisper.cpp 下载与编译

3.1 下载whisper.cpp

whisper.cpp 是 OpenAI 的 Whisper 模型的 C/C++ 端口,可以通过 GitHub 下载源码:

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

然后通过 models/download-ggml-model.cmd 进行权重文件下载:

models/download-ggml-model.cmd tiny
models/download-ggml-model.cmd base

整个 whisper 系列一共有5个级别的模型,按参数量进行排序,分别是微型 tiny,基本 base,小型 small,中型 medium,大型 large。参数 base 可以替换为 base.en, tiny, tiny.en, small, small.en, medium, medium.en, large。带 en 后缀的表示是英语模型,不带 en 后缀的是多国语言模型。

3.2 编译whisper.cpp

进入项目目录并生成 VS 工程文件:

mkdir build
cd build
cmake ..

编译生成 main 程序。

4. 测试

执行 main.exe 进行语音识别测试:

main.exe -m C:\Users\tomcat\Desktop\yxy\whisper.cpp\models\ggml-base.bin -f C:\Users\tomcat\Desktop\yxy\whisper.cpp\build\bin\Debug\output.wav -l zh

可以修改参数后再次执行:

main.exe -m C:\Users\tomcat\Desktop\yxy\whisper.cpp\models\ggml-base.bin -f C:\Users\tomcat\Desktop\yxy\whisper.cpp\build\bin\Debug\output.wav

5. 批量处理

可以编写批处理脚本进行批量语音识别:

chcp 65001
@echo off
REM 设置 PATH 环境变量,包含whisper可执行文件
SET PATH=%PATH%;C:\python312\Scripts
REM 指定所有视频所在路径,支持多级目录。
SET "video_dir=C:output"
REM 循环遍历所有视频
FOR /R "%video_dir%" %%f IN (*.mp4,*.wav,*.avi,*.ts) DO (
    
    REM 提取视频文件名 
    SET "file_name=%%~nf"
    
    REM 切换到视频所在目录
    cd /d "%%~dpf"
    
    REM 为这个视频生成wav音频文件
    ffmpeg.exe -i "%%f" -ar 32000 -acodec pcm_s16le "%%f.wav"
    
    REM 语音文件识别
    main.exe -l zh -osrt -m C:\ggml-medium.bin "%%f.wav"
    REM 返回原目录
    cd /d "%video_dir%"
)
pause
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号