当前位置:AIGC资讯 > AIGC > 正文

whisper.cpp安装配置

下载代码,代码地址:https://github.com/ggerganov/whisper.cpp 下载模型,现有模型如下,small 模型基本能达到日常的用途,建议下载 small 以上的。下载模型的指令:
./download-ggml-model.sh small
编译,项目根目录执行make指令,得到 main.exe 可执行文件,然后就可以实现录音转文字了。

录音转文字

录音文件只支持16khz的.wav文件。
从视频中以16000的采样率提取音频并保存为 wav 文件的命令:

ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 16000 output.wav

录音识别指令:

./main.exe -l zh -m ./models/ggml-small.bin ../dhy.wav

可选参数:
-h, --help:显示帮助信息并退出程序。
-t N, --threads N:设置使用的线程数。
-p N, --processors N:设置使用的处理器数。
-ot N, --offset-t N:设置音频的时间偏移量(以毫秒为单位)。
-on N, --offset-n N:设置段索引的偏移量。
-d N, --duration N:设置要处理的音频长度(以毫秒为单位)。
-mc N, --max-context N:设置存储的文本上下文标记的最大数量。
-ml N, --max-len N:设置段的最大长度(以字符为单位)。
-sow, --split-on-word:指示是在单词上而不是标记上拆分段。
-bo N, --best-of N:设置要保留的最佳候选项数。
-bs N, --beam-size N:设置束搜索的束大小。
-wt N, --word-thold N:设置单词时间戳概率阈值。
-et N, --entropy-thold N:设置解码器失败时的熵阈值。
-lpt N, --logprob-thold N:设置解码器失败时的对数概率阈值。
-su, --speed-up:指示是否通过加速音频来减少精度。
-tr, --translate:指示是否从源语言翻译为英语。
-di, --diarize:指示是否对立体声音频进行人声分离。
-nf, --no-fallback:指示在解码时不使用温度回退。
-otxt, --output-txt:指示是否将结果输出到文本文件中。
-ovtt, --output-vtt:指示是否将结果输出到vtt文件中。
-osrt, --output-srt:指示是否将结果输出到srt文件中。
-olrc, --output-lrc:指示是否将结果输出到lrc文件中。
-owts, --output-words:指示是否输出用于生成卡拉OK视频的脚本。
-fp, --font-path:指定用于卡拉OK视频的等宽字体的路径。
-ocsv, --output-csv:指示是否将结果输出到CSV文件中。
-oj, --output-json:指示是否将结果输出到JSON文件中。
-of FNAME, --output-file FNAME:指定输出文件的路径(不包括文件扩展名)。
-ps, --print-special:指示是否打印特殊标记。
-pc, --print-colors:指示是否打印颜色。
-pp, --print-progress:指示是否打印进度。
-nt, --no-timestamps:指示是否不打印时间戳。
-l LANG, --language LANG:指定语音识别的语言('auto’表示自动检测)。
-dl, --detect-language:指示是否在自动检测语言后退出程序。
–prompt PROMPT:指定初始提示。
-m FNAME, --model FNAME:指定模型路径。
-f FNAME, --file FNAME:指定输入WAV文件的路径。

实时转录

实时语音转录需要得到 stream 文件。使用make stream命令编译, 发现需要依赖 sdl 库。

> make stream
In file included from examples/common-sdl.cpp:1:
examples/common-sdl.h:3:10: fatal error: SDL.h: No such file or directory
    3 | #include <SDL.h>

建议通过 MSYS2 来安装 SDL2:

pacman -S mingw-w64-x86_64-SDL2

安装完成后make stream可以成功编译,得到 stream.exe 文件。开始测试:

./stream -m ./models/ggml-small.bin -t 8 --step 500 --length 5000
./stream.exe -m ../whisper.cpp/models/ggml-base.bin -t 8 -l zh -kc -f ./output.txt

参数说明:

-h, --help:显示帮助信息并退出 -t N, --threads N:设置使用的线程数,N为线程数,默认值为params.n_threads –step N:设置音频步长(单位为毫秒) –length N:设置音频长度(单位为毫秒) –keep N:设置从上一步中保留的音频长度(单位为毫秒) -c ID, --capture ID:设置音频捕获设备的ID号 -mt N, --max-tokens N:设置每个音频块的最大token数 -ac N, --audio-ctx N:设置语音上下文大小(0表示全部) -vth N, --vad-thold N:设置语音活动检测阈值 -fth N, --freq-thold N:设置高通滤波器截止频率 -su, --speed-up:启用2倍速播放(牺牲一定准确性) -tr, --translate:将源语言翻译成英语 -nf, --no-fallback:在解码时不使用温度回退 -ps, --print-special:打印特殊token -kc, --keep-context:保持音频块之间的上下文 -l LANG, --language LANG:设置所使用的语言,LANG是语言的缩写 -m FNAME, --model FNAME:设置模型文件路径 -f FNAME, --file FNAME:设置文本输出文件名

更新时间 2024-02-25