摘要

whisper开源之后,很多相关的衍生产品也开源了,比如faster-whisper,它是一个比whisper转录更快的技术实现,转录速度是whisper的4倍,并且占用的显存更少,占用显存是whisper的1/2。而我们这次要讲的是faster-whisper-webui是内置了VAD的支持,可以很精准的定位到每一句话的开始和结束,对于转录长音视频很有意义,可以防止转录长音视频出现幻听的情况。

1、安装faster-whisper-webui

1.1、faster-whisper-webui简介

faster-whisper-webui顾名思义是faster-whisper的web网页版本,当然它不单有网页版本,也可以通过像whisper的命令行方式启动,最关键的是项目内部已经整合了VAD(VAD是一种音频活动检测的算法,简单来说可以准确的把音频中的每一句话分离开来,这很好的解决了whisper在转录长音频时出现幻听的问题),如果想要了解VAD算法可以点击这里。在faster-whisper-webui中还提供了API接口的方式,我们可以通过任何编程语言调用faster-whisper-webui提供的接口。

该项目原始地址是aadnk/whisper-webui

2、克隆源码

git clone https://github.com/ycyy/faster-whisper-webui.git

3、安装依赖

pip install -r requirements.txt

这里推荐的使用python版本是3.8~3.11,如果你使用的python版本过低或太高,安装以些依赖会发生错误。具体如何升级python版本,大家可以去我的博客中阅读,这里我也给了链接

4、下载模型

先要在项目路径下创建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__

4.1、下载faster-whisper模型

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

4.2、下载silero-vad依赖

git clone https://github.com/snakers4/silero-vad.git

5、运行

5.1、命令行方式运行

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

5.2、网页方式运行

python app.py --input_audio_max_duration -1 --server_name 127.0.0.1 --auto_parallel True

转录之后的结果有三种格式:SRT/VTT/Transcript。

5.3、切换实现方式

有两种实现可以切换,一种是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"
}

6、在Google Colab中运行

具体可以参考这篇文章

7、参考文献

[1] faster-whisper-webui文档

[2] 更换pip源

[3] CentOS安装Whisper

[4] VAD算法详解

Q.E.D.


热爱生活,热爱程序