whisper开源之后,很多相关的衍生产品也开源了,比如faster-whisper,它是一个比whisper转录更快的技术实现,转录速度是whisper的4倍,并且占用的显存更少,占用显存是whisper的1/2。而我们这次要讲的是faster-whisper-webui是内置了VAD的支持,可以很精准的定位到每一句话的开始和结束,对于转录长音视频很有意义,可以防止转录长音视频出现幻听的情况。
faster-whisper-webui顾名思义是faster-whisper的web网页版本,当然它不单有网页版本,也可以通过像whisper的命令行方式启动,最关键的是项目内部已经整合了VAD(VAD是一种音频活动检测的算法,简单来说可以准确的把音频中的每一句话分离开来,这很好的解决了whisper在转录长音频时出现幻听的问题),如果想要了解VAD算法可以点击这里。在faster-whisper-webui中还提供了API接口的方式,我们可以通过任何编程语言调用faster-whisper-webui提供的接口。
该项目原始地址是aadnk/whisper-webui。
git clone https://github.com/ycyy/faster-whisper-webui.git
pip install -r requirements.txt
这里推荐的使用python版本是3.8~3.11,如果你使用的python版本过低或太高,安装以些依赖会发生错误。具体如何升级python版本,大家可以去我的博客中阅读,这里我也给了链接。
先要在项目路径下创建models
目录。
mkdir models
cd models
模型里的目录结构如下所示:
├─faster-whisper
│ ├─base
│ ├─large
│ ├─large-v2
│ ├─medium
│ ├─small
│ └─tiny
└─silero-vad
├─examples
│ ├─cpp
│ ├─microphone_and_webRTC_integration
│ └─pyaudio-streaming
├─files
└─__pycache__
faster-whisper-webui的项目是基于faster-whisper的,所以我们需要去下载faster-whisper模型,点击这里跳转到模型下载处。
这里我以下载large-v2模型为例。
apt install git-lfs
git lfs install
git clone https://huggingface.co/guillaumekln/faster-whisper-large-v2
git clone https://github.com/snakers4/silero-vad.git
python cli.py --model large --vad silero-vad --language Chinese audio.mp3
--model
:指定使用的模型,可选的模型有:tiny、base、small、medium、large、large-v2
--vad
:指定使用的vad类型,常见的vad类型有:silero-vad、silero-vad-skip-gaps、silero-vad-expand-into-gaps、periodic-vad
--language
:指定音频中使用的语言
我们还可以指定其它的参数,例如:
python cli.py \
[--vad {none,silero-vad,silero-vad-skip-gaps,silero-vad-expand-into-gaps,periodic-vad}] \
[--vad_merge_window VAD_MERGE_WINDOW] \
[--vad_max_merge_size VAD_MAX_MERGE_SIZE] \
[--vad_padding VAD_PADDING] \
[--vad_prompt_window VAD_PROMPT_WINDOW]
[--vad_cpu_cores NUMBER_OF_CORES]
[--vad_parallel_devices COMMA_DELIMITED_DEVICES]
[--auto_parallel BOOLEAN]
如果你有多张显卡,那么你可以使用--vad_parallel_devices
来指定,例如:指定使用两张显卡--vad_parallel_devices 0,1
。
你也可以使用这个参数--auto_parallel True
会自动根据你有多少张显卡,CPU是多少核心的来自动分配(最多支持8个)。
python cli.py --model large --vad silero-vad --language Chinese --auto_parallel True audio.mp3
python app.py --input_audio_max_duration -1 --server_name 127.0.0.1 --auto_parallel True
转录之后的结果有三种格式:SRT/VTT/Transcript。
有两种实现可以切换,一种是whisper,还有一种是faster-whisper。这里推荐使用faster-whisper,因为速度更快,faster-whisper速度是whisper的4倍,并且占用显存要比whisper少2倍。
如果我们想要用faster-whisper,那么我们需要执行下面的命令来安装faster-whisper依赖。
pip install -r requirements-fasterWhisper.txt
如果我们想要使用whisper,那么我们需要执行下面的命令来安装whisper依赖。
pip install -r requirements-whisper.txt
我们如何切换呢?很简单添加参数即可。
python app.py --whisper_implementation faster-whisper --input_audio_max_duration -1 --server_name 127.0.0.1 --auto_parallel True
当然如果我们嫌弃这种方式太麻烦了,每次启动都要写这么多参数。那么你可以在配置文件中写。找到配置文件config.json5
,然后添加你要使用的实现方式即可。
{
"whisper_implementation": "faster-whisper"
}
具体可以参考这篇文章。
[1] faster-whisper-webui文档
[2] 更换pip源
[3] CentOS安装Whisper
[4] VAD算法详解