首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10)

Faster-Whisper是Whisper开源后的第三方进化版本,它对原始的 Whisper 模型结构进行了改进和优化。这包括减少模型的层数、减少参数量、简化模型结构等,从而减少了计算量和内存消耗,提高了推理速度,与此同时,Faster-Whisper也改进了推理算法、优化计算过程、减少冗余计算等,用以提高模型的运行效率。

本次我们利用Faster-Whisper对日语视频进行双语(日语/国语)转录实践,看看效率如何。

构建Faster-Whisper转录环境

首先确保本地已经安装好Python3.10版本以上的开发环境,随后克隆项目:

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

进入项目的目录:

cd?faster-whisper-webui

安装项目依赖:

pip3?install?-r?requirements.txt

这里需要注意的是,除了基础依赖,还得再装一下faster-whisper依赖:

pip3?install?-r?requirements-fasterWhisper.txt

如此,转录速度会更快。

模型的下载和配置

首先在项目的目录建立模型文件夹:

mkdir?Models

faster-whisper项目内部已经整合了VAD算法,VAD是一种音频活动检测的算法,它可以准确的把音频中的每一句话分离开来,并且让whisper更精准的定位语音开始和结束的位置。

所有首先需要配置VAD模型:

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

然后将克隆下来的vad模型放入刚刚建立的Models文件夹中即可。

接着下载faster-whisper模型,下载地址:

https://huggingface.co/guillaumekln/faster-whisper-large-v2

这里建议只下载faster-whisper-large-v2模型,也就是大模型的第二版,因为faster-whisper本来就比whisper快,所以使用large模型优势就会更加的明显。

模型放入models文件夹的faster-whisper目录,最终目录结构如下:

models

├─faster-whisper

│??├─large-v2

└─silero-vad

├─examples

│??├─cpp

│??├─microphone_and_webRTC_integration

│??└─pyaudio-streaming

├─files

└─__pycache__

至此,模型就配置好了。

本地推理进行转录

现在,我们可以试一试faster-whisper的效果了,以「原神」神里绫华日语视频:《谁能拒绝一只蝴蝶忍呢?》为例子,原视频地址:

https://www.bilibili.com/video/BV1fG4y1b74e/

项目根目录运行命令:

python?cli.py?--model?large-v2?--vad?silero-vad?--language?Japanese?--output_dir?d:/whisper_model?d:/Downloads/test.mp4

这里--model指定large-v2模型,--vad算法使用silero-vad,--language语言指定日语,输出目录为d:/whisper_model,转录视频是d:/Downloads/test.mp4。

程序输出:

D:\work\faster-whisper-webui>python?cli.py?--model?large-v2?--vad?silero-vad?--language?Japanese?--output_dir?d:/whisper_model?d:/Downloads/test.mp4

Using?faster-whisper?for?Whisper

[Auto?parallel]?Using?GPU?devices?['0']?and?8?CPU?cores?for?VAD/transcription.

Creating?whisper?container?for?faster-whisper

Using?parallel?devices:?['0']

Created?Silerio?model

Parallel?VAD:?Executing?chunk?from?0?to?74.071224?on?CPU?device?0

Loaded?Silerio?model?from?cache.

Getting?timestamps?from?audio?file:?d:/Downloads/test.mp4,?start:?0,?duration:?74.071224

Processing?VAD?in?chunk?from?00:00.000?to?01:14.071

C:\Users\zcxey\AppData\Roaming\Python\Python310\site-packages\torch\nn\modules\module.py:1501:?UserWarning:?operator?()?profile_node?%669?:?int[]?=?prim::profile_ivalue(%667)

does?not?have?profile?information?(Triggered?internally?at?..\third_party\nvfuser\csrc\graph_fuser.cpp:108.)

return?forward_call(*args,?**kwargs)

VAD?processing?took?2.474104000022635?seconds

Transcribing?non-speech:

[{'end':?75.071224,?'start':?0.0}]

Parallel?VAD?processing?took?8.857761900057085?seconds

Device?0?(index?0)?has?1?segments

Using?device?0

(get_merged_timestamps)?Using?override?timestamps?of?size?1

Processing?timestamps:

[{'end':?75.071224,?'start':?0.0}]

Running?whisper?from??00:00.000??to??01:15.071?,?duration:??75.071224?expanded:??0?prompt:??None?language:??None

Loading?faster?whisper?model?large-v2?for?device?None

WARNING:?fp16?option?is?ignored?by?faster-whisper?-?use?compute_type?instead.

[00:00:00.000->00:00:03.200]?稲妻神里流?太刀術免許開伝

[00:00:03.200->00:00:04.500]?神里綾香

[00:00:04.500->00:00:05.500]?参ります!

[00:00:06.600->00:00:08.200]?よろしくお願いします

[00:00:08.200->00:00:12.600]?こののどかな時間がもっと増えると嬉しいのですが

[00:00:13.600->00:00:15.900]?私って欲張りですね

[00:00:15.900->00:00:18.100]?神里家の宿命や

[00:00:18.100->00:00:19.900]?社部業の重りは

[00:00:19.900->00:00:23.600]?お兄様が一人で背負うべきものではありません

[00:00:23.600->00:00:27.700]?多くの方々が私を継承してくださるのは

[00:00:27.700->00:00:30.900]?私を白鷺の姫君や

[00:00:30.900->00:00:34.600]?社部業神里家の霊嬢として見ているからです

[00:00:34.600->00:00:38.500]?彼らが継承しているのは私の立場であって

[00:00:38.500->00:00:41.700]?綾香という一戸人とは関係ございません

[00:00:41.700->00:00:43.400]?今の私は

[00:00:43.400->00:00:47.300]?皆さんから信頼される人になりたいと思っています

[00:00:47.300->00:00:49.700]?その気持ちを鼓舞するものは

[00:00:49.700->00:00:52.300]?肩にのしかかる銃石でも

[00:00:52.300->00:00:54.800]?他人からの期待でもございません

[00:00:54.800->00:00:56.700]?あなたがすでに

[00:00:56.800->00:00:58.800]?そのようなお方だからです

[00:00:58.800->00:01:00.500]?今から言うことは

[00:01:00.500->00:01:03.900]?稲妻幕府社部業神里家の肩書きに

[00:01:03.900->00:01:06.200]?ふさわしくないものかもしれません

[00:01:06.200->00:01:11.100]?あなたは私のわがままを受け入れてくださる方だと信じています

[00:01:11.100->00:01:12.500]?神里流

[00:01:12.500->00:01:14.000]?壮烈

Whisper?took?22.232674299972132?seconds

Parallel?transcription?took?31.472856600070372?seconds

Max?line?width?80

Closing?parallel?contexts

Closing?pool?of?1?processes

Closing?pool?of?8?processes

可以看到,1分14秒的视频,vad用了8秒,whisper用了22秒,转录一共用了31秒。

注意,这里只是用了whisper原版的算法,现在我们添加--whisper_implementation faster-whisper参数来使用faster-whisper改进后的算法:

python?cli.py?--whisper_implementation?faster-whisper?--model?large-v2?--vad?silero-vad?--language?Japanese?--output_dir?d:/whisper_model?d:/Downloads/test.mp4

程序返回:

Running?whisper?from??00:00.000??to??01:15.071?,?duration:??75.071224?expanded:??0?prompt:??None?language:??None

Loading?faster?whisper?model?large-v2?for?device?None

WARNING:?fp16?option?is?ignored?by?faster-whisper?-?use?compute_type?instead.

[00:00:00.000->00:00:03.200]?稲妻神里流?太刀術免許開伝

[00:00:03.200->00:00:04.500]?神里綾香

[00:00:04.500->00:00:05.500]?参ります!

[00:00:06.600->00:00:08.200]?よろしくお願いします

[00:00:08.200->00:00:12.600]?こののどかな時間がもっと増えると嬉しいのですが

[00:00:13.600->00:00:15.900]?私って欲張りですね

[00:00:15.900->00:00:18.100]?神里家の宿命や

[00:00:18.100->00:00:19.900]?社部業の重りは

[00:00:19.900->00:00:23.600]?お兄様が一人で背負うべきものではありません

[00:00:23.600->00:00:27.700]?多くの方々が私を継承してくださるのは

[00:00:27.700->00:00:30.900]?私を白鷺の姫君や

[00:00:30.900->00:00:34.600]?社部業神里家の霊嬢として見ているからです

[00:00:34.600->00:00:38.500]?彼らが継承しているのは私の立場であって

[00:00:38.500->00:00:41.700]?綾香という一戸人とは関係ございません

[00:00:41.700->00:00:43.400]?今の私は

[00:00:43.400->00:00:47.300]?皆さんから信頼される人になりたいと思っています

[00:00:47.300->00:00:49.700]?その気持ちを鼓舞するものは

[00:00:49.700->00:00:52.300]?肩にのしかかる銃石でも

[00:00:52.300->00:00:54.800]?他人からの期待でもございません

[00:00:54.800->00:00:56.700]?あなたがすでに

[00:00:56.800->00:00:58.800]?そのようなお方だからです

[00:00:58.800->00:01:00.500]?今から言うことは

[00:01:00.500->00:01:03.900]?稲妻幕府社部業神里家の肩書きに

[00:01:03.900->00:01:06.200]?ふさわしくないものかもしれません

[00:01:06.200->00:01:11.100]?あなたは私のわがままを受け入れてくださる方だと信じています

[00:01:11.100->00:01:12.500]?神里流

[00:01:12.500->00:01:14.000]?壮烈

Whisper?took?10.779123099986464?seconds

Parallel?transcription?took?11.567014200030826?seconds

大模型只用了10秒,这效率,绝了。

中文字幕

在以往的Whisper模型中,如果我们需要中文字幕,需要通过参数--task translate翻译成英文,然后再通过第三方的翻译接口将英文翻译成中文,再手动匹配字幕效果,比较麻烦。

现在,我们只需要将语言直接设置为中文即可,程序会进行自动翻译:

python?cli.py?--whisper_implementation?faster-whisper?--model?large-v2?--vad?silero-vad?--language?Chinese?--output_dir?d:/whisper_model?d:/Downloads/test.mp4

这里的--language参数改为Chinese。

程序返回:

Running?whisper?from??00:00.000??to??01:15.071?,?duration:??75.071224?expanded:??0?prompt:??None?language:??None

Loading?faster?whisper?model?large-v2?for?device?None

WARNING:?fp16?option?is?ignored?by?faster-whisper?-?use?compute_type?instead.

[00:00:00.000->00:00:03.200]?稲妻神里流太刀術免許改練

[00:00:03.200->00:00:04.400]?神里綾香

[00:00:04.400->00:00:05.400]?來吧

[00:00:06.600->00:00:08.200]?請多多指教

[00:00:08.200->00:00:12.600]?希望能有更多的這段寂靜的時間

[00:00:13.600->00:00:15.800]?我真是太有興趣了

[00:00:15.800->00:00:20.000]?神里家的宿命和社部行的重量

[00:00:20.000->00:00:23.600]?不應該由哥哥一個人承擔

[00:00:23.600->00:00:27.400]?很多人都敬重我

[00:00:27.600->00:00:28.800]?是因為他們把我視為

[00:00:28.800->00:00:34.600]?神里家的宿命和社部行的重量

[00:00:34.600->00:00:38.600]?他們敬重的是我的立場

[00:00:38.600->00:00:41.800]?與我自己的身分無關

[00:00:41.800->00:00:43.400]?現在的我

[00:00:43.400->00:00:47.400]?是想成為大家信任的一個人

[00:00:47.400->00:00:49.800]?那些敬重我的人

[00:00:49.800->00:00:52.400]?無論是肩上的重石

[00:00:52.400->00:00:54.800]?或是別人的機器

[00:00:54.800->00:00:58.800]?都是因為你已經是這樣的一個人

[00:00:58.800->00:01:00.400]?我現在要說的話

[00:01:00.400->00:01:03.800]?可能不適合

[00:01:03.800->00:01:06.200]?神里家的宿命和社部行

[00:01:06.200->00:01:11.000]?但我相信你能接受我的自私

[00:01:11.000->00:01:12.400]?神里流

[00:01:12.400->00:01:14.000]?消滅

Whisper?took?18.85215839999728?seconds

字幕就已经是中文了,注意转录+翻译一共花了18秒,时间成本比直接转录要高。

双语字幕效果:

结语

由于 Faster-Whisper 的速度更快,它可以扩展到更多的应用领域,包括实时场景和大规模的数据处理任务。这使得 Faster-Whisper 在语音识别、自然语言处理、机器翻译、智能对话等领域中具有更广泛的应用潜力,当然了,更重要的是,当您的电脑里D盘中的爱情片还没有中文字幕时,您当然知道现在该做些什么了。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OBP100Ac5Li4SSUv3xCTKcFQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com