设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ( e0 m6 e  j- X* f- X

* R0 b' g( m; M( c: r0 _% ^借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
/ x! @* t7 I( L/ K+ v" N效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。- `4 I2 L' ]# |. i  ^. ?1 m
----------------------------------------  P. |* ]  h+ S% Y: n* s% b+ v
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
  r3 s8 k  B; j; M, ]+ a在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
9 B" Y' D; |, C  `  Q+ t1 K3 R----------------------------------------7 [, D8 K- G5 g) e6 y
https://github.com/guillaumekln/faster-whisper
7 t1 @) [! w5 z1 \# L& a* ]安装如下:
" }( f6 l" g# |1, Windows 10
+ H+ h+ `' b, B/ X+ ~5 ^0 L2, Python 3.10.11) K& `/ g6 D8 w4 r
3, CUDA 12.1
' V; e+ i. K- K4, 在python 3 中安装
" U3 u- Z2 v5 ?pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
4 P' |  i3 ?$ w+ G! N3 f, D这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
3 N7 y7 z0 X' Y2 `3 M0 y# p' {" {5,pip install -U openai-whisper
5 U$ z8 N5 J' ~$ Y: S这是向whisper 致敬,可以不装% X7 D8 V' C1 p3 u! T8 q4 c# r# f* r
6,pip install faster-whisper
7 H( B$ @0 f8 O& j" [5 z----------------------------------------! o$ f" O" H% R; d, T
whisper 我用的命令行,faster-whisper 我用的是python。! h" q" ^5 ^" n$ `) R0 A* f
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
% b  {4 I4 U0 A% @: \
$ u! N" R. i' l2 w----------------------------------------
5 u9 T) a: n' R5 C/ {; ]
8 ~+ |  G5 H. l4 p: j( m7 Kfrom faster_whisper import WhisperModel. I& [( w6 C- W/ w

, X  u! Y' o" `- m) b  e2 qmodel_size = "small"' s' l0 q$ N# Q' [: e& G' K  f

! }3 L, B' `) X4 |( Z5 l0 Emodel = WhisperModel(model_size, device="cuda", compute_type="int8")) i' z% L8 ]7 j( H( _8 v, Z% t

" ?- A" B! c! W; s" bsegments, info = model.transcribe(
. D. f& ]6 E7 I    sourceFileName, ; n+ Y2 O& l+ G2 f* z1 g. ?1 ?
    beam_size=5,
2 @0 V/ k5 @  v& n( `) ]    language="en", 8 K& D8 ]% @( g4 P, Z, m
    task="transcribe",   s( g; x: p' U' q) B4 v
    word_timestamps=True, 7 }1 }) a! U' m' @, s
    initial_prompt = "Hello, welcome to my lecture.")
. g9 p5 F! h) [% f6 P8 _
# K0 b2 _( X+ J/ C+ i/ v1 Q( k& lfor segment in segments:
) o3 l) ~: h0 c# T3 k$ ]    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))5 d" r+ `( W! r2 C2 |1 x

" r! ]' s! `  C7 l1 J9 @, V0 X5 u7 Y        for word in segment.words:
1 v) x# \, m1 Z3 {+ N8 b                : D" Q( _8 ?9 u- w! _5 i6 ]% v; Z
----------------------------------------
2 `# }  [. s2 E
7 u5 `- C4 k" ~- v9 U; U代码说明:3 T. H3 `# u) v$ |2 [
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
, |8 \- p# j% [4 r但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
5 ^; e: X0 p4 q" b- ?% `# o! F2,segment 本身是很粗糙的,做字幕勉强能用。
/ _4 N3 }$ s, z0 D) n9 t3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。. ^1 {* ?  q$ p8 Z+ r
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
1 l% ]& i& h, |4 Q/ j比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
& E' L& h; k; @5,model.transcribe 中参数说明:$ L2 }6 P, L5 p6 N5 a
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数  H8 u+ @1 V& G) y% d  Y$ r$ T
其中9 ]9 t$ V) c& A" p
    word_timestamps=True, ; U! f5 r- l$ S
保证了你能拿到 word,否则是拿不到的
; @% d4 @  Y" n/ k    initial_prompt = "Hello, welcome to my lecture.")
7 c( L! ]1 K3 r保证能尽可能准确的断句 punctuation,但是不是决定性的。" N- R9 O: J# V' U, C& P) p" z4 N( Y
其他参数可参考源文件:+ L# I& }1 ]* U) A
https://github.com/guillaumekln/ ... isper/transcribe.py& N2 K5 {5 p+ U+ ]) e, p
152 def transcribe(
% @, E3 _! t) G! _- m从源文件你可以看到是支持中文的句号断句的。
( m! X# y9 Z$ s  G+ T- b* ^. h
0 `2 V1 W: K8 }8 s9 x6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。' t# U6 S) @+ [- d' J# b
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
/ {% W6 }9 c% s: s( V8 q8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。5 @3 w5 L$ U3 W
* Q' o; R# s; S7 T* N

7 V, U1 U" o. S5 q/ [8 e1 C, n' q3 a* S5 e' H; p% L! v# ]

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-6-9 04:47 , Processed in 0.055897 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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