利用OpenAI技术使用开源项目whisper为视频增加字幕
Whisper是2022年9月被OpenAI开源了的自动语音识别系统。它除了可以用于语音识别,还能实现多种语言的转录,以及将这些语言翻译成英语。 transcribe(转录)可以将语音转为文字,Whisper会为音视频生成带时间轴的字幕文件,支持99种语言AI字幕工具。
Whisper项目地址:https://github.com/openai/whisper
Whisper 安装
虽然Whisper与Stable Diffusion同样归属AI工具,但Whisper安装非常简单,两行代码即可开箱使用。使用python3.9.9和PyTorch 1.10.1来训练模型,代码与Python3.8-3.10版本兼容
1 | pip install git+https://github.com/openai/whisper.git |
音频转录
1 | whisper XXX.avi |
Whisper进阶命令
task
--task
分为 transcribe(语音转录)和 translate。Whisper 默认使用 --task transcribe
模式,将语音转录为对应的语言字幕。--task translate
是所有语言翻译为英文,目前尚未支持翻译为其他语言。
language
--language
是设置语音转录的语种,支持语种范围查看 tokenizer.py,比如指定日语 --language japanese
。如果你没指定语种,Whisper 会截取音频的前 30 秒来判断语种。
如果指定语种与文件中的语种并不相同,Whisper 会强制翻译,但 10 分钟以上的音视频会出现大量的重复无意义字幕。2假设你把日语视频的转录语言设为汉语,前 8 分钟 Whisper 会正确转录到中文,但 8 分钟后的转录字幕会一直重复,并与实际片段无关。
model
--model
指 Whisper 的转录模型,转录效果为 tiny < base < small < medium < large,默认使用 small。添加参数 --model medium
或 --model large
可以切换到更大的模型,但转录时间也会变长。如果你是对英文视频进行转录,则在模型参数上添加后缀 .en
,能提升转录速度。
幻听参数
非英语视频的转录有时会出现幻听,即静默片段被识别出语音,或是转录结果与该片段无关。这些问题是由语气停顿参数引起的。幻听的解决方案是引入 VAD,但 VAD 对动手能力要求较高。如果你的视频转录出现了严重幻听,建议先尝试调节参数阈值。
--no_speech_threshold
无声识别的阈值,默认为 0.6。当 no_speech_threshold 高于阈值且 logprob_threshold 低于预设时,该片段将被标记为静默。对于非英语长视频来说,建议将其调低,否则经常出现大段的重复识别。--logprob_threshold
转录频次的阈值,默认为 -1.0。当 logprob_threshold 低于预设时,将不对该片段进行转录。建议修改为 None 或更低的值。--compression_ratio_threshold
压缩比的阈值,默认为 2.4。当 compression_ratio_threshold 高于预设时,将不对该片段进行转录。
--no_speech_threshold 0.5 --logprob_threshold None --compression_ratio_threshold 2.2
是我常用的参数,你可以按视频情况来调节。