设为首页收藏本站

爱吱声

 找回密码
 注册
搜索
查看: 4910|回复: 1
打印 上一主题 下一主题

[信息技术] faster-whisper 更快的语音到文字的识别 ASR

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 % o2 e+ S  F, T0 l: C

' ^: \: X9 Z" r% H借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。1 ?, w) F! q* E, {* Y7 \
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。6 {3 [( a  t# v- o
----------------------------------------  n& c" o  C2 V/ _
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
+ a1 {8 y9 J' l9 y在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。( E2 Q" Q6 N* k
----------------------------------------4 O6 @9 S1 h+ L' u& _
https://github.com/guillaumekln/faster-whisper" s* c- D! O) s& Z1 C
安装如下:
! S/ {$ m2 H; W* w1, Windows 10
) V8 j5 C2 }& o! @2, Python 3.10.11
  h9 ^) J& |' q6 x0 ]/ Y" ~& e# @3, CUDA 12.1  [1 \! z, w0 J# w+ `4 [* J" `: P
4, 在python 3 中安装! e, w6 N4 f+ w9 T* a1 d7 Z% g  J
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
9 u; u% ]- n$ i; a' w6 O# a& U这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
" J& O, u( d- i3 p- Z$ ^  \$ G5,pip install -U openai-whisper
1 e) A/ d  c6 \' d' h  s# `6 `这是向whisper 致敬,可以不装7 g1 S4 ^7 B/ C3 `0 |4 _
6,pip install faster-whisper% D& F/ B% t( u5 j, N: b5 K  s. ~
----------------------------------------: j/ k' k1 J& D
whisper 我用的命令行,faster-whisper 我用的是python。' x8 F$ C3 Y% ^  v
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:4 _, I- f0 w8 l1 x3 }- S
5 C) U9 B( M8 F, K
----------------------------------------5 M+ K6 v" H! n# \7 h+ h! B

/ |* x& }7 Y& ^1 Dfrom faster_whisper import WhisperModel
3 ^- `4 v" U) O9 o$ a! V5 U
5 I, d! W# }, a' c9 {% pmodel_size = "small"4 g# n( f  ^8 v8 B! \+ v* F4 J

+ x2 p; `$ |# b! r+ M) Cmodel = WhisperModel(model_size, device="cuda", compute_type="int8")* \3 Z; j" q* b" K. H2 ~# X
3 M% A( ]& d$ }, y( z
segments, info = model.transcribe(
9 f! }" e  Q1 E4 N% R! S" j    sourceFileName,
4 v/ @0 M% l3 L+ w    beam_size=5, + b2 x( r9 N4 M
    language="en", & o/ X( F% M% N) t3 S* m
    task="transcribe", $ \1 v, [8 W8 b6 y5 f5 u
    word_timestamps=True, ; a- U/ `7 `! Q( [/ m7 z! x
    initial_prompt = "Hello, welcome to my lecture.")9 x2 o+ g/ C3 }- \) @
! P$ x2 v; ^# }9 @) I! |3 `
for segment in segments:
- a9 r1 {1 I% J/ @    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
; i( z0 f% p6 R1 W0 l, j6 s3 f
5 d) [; b9 f4 u. y% k' o+ C        for word in segment.words:: P4 g. |( v: Y) F
                ; c2 o% v/ i" i; J+ G
----------------------------------------
; R$ D' o1 D, y& d3 D* _9 W" b9 A8 w9 F5 x
代码说明:
3 i8 g  H6 x, f' W1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
* p( ]1 h* U( Y% p9 F, G- N9 X但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
& U/ r0 C4 Q  ]; @# b. V2,segment 本身是很粗糙的,做字幕勉强能用。3 _0 J& M4 q$ K9 d- H( C8 f
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
# G6 S& N  ]2 j8 L4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
; w8 O, [1 ^( F2 h9 ~/ P+ c" A比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
7 O& b: P" ]# l; _+ Q& H' f: {5,model.transcribe 中参数说明:
. R" |: i' Y+ _你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数( j; V) V/ K, ~3 ~; Z, u; w
其中3 [9 C5 t, g$ m
    word_timestamps=True, * O" u  q2 @. o% o
保证了你能拿到 word,否则是拿不到的
1 K5 ~8 ~1 `+ p7 [$ L    initial_prompt = "Hello, welcome to my lecture.")% I. P0 y) H3 F
保证能尽可能准确的断句 punctuation,但是不是决定性的。# Z: _6 {0 d; T( D
其他参数可参考源文件:' }  z" A& [) K! G# J# e9 W
https://github.com/guillaumekln/ ... isper/transcribe.py  p9 V3 r1 m# T* M0 K5 P
152 def transcribe(
0 c; A/ `5 F" r& `* ^5 q从源文件你可以看到是支持中文的句号断句的。
+ V: m5 C& U& Z1 j
  l* t! y! E- L' l6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
8 r5 z' {5 D8 d$ ^* I# R: A7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。, h  v# m, |( J% H& z
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
6 x( B# u5 F! b; l9 [2 l
4 l, w1 r7 l1 V  L + C  D' r5 V+ Q* d: i

) U- s) D8 J8 ?- g2 b% b

评分

参与人数 4爱元 +32 收起 理由
蓦然回首 + 8
唐家山 + 4
老票 + 12
老财迷 + 8

查看全部评分

该用户从未签到

沙发
 楼主| 发表于 2023-6-4 11:53:23 | 只看该作者
多谢各位榜爷打赏。
回复 支持 反对

使用道具 举报

手机版|小黑屋|Archiver|网站错误报告|爱吱声   

GMT+8, 2025-10-30 05:51 , Processed in 0.030291 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表