设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
$ ~- N) f+ [) f, F
! V" u; `3 P( J' P4 j借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。. m8 G( Y& [- f
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
8 R. f+ C  Z8 G" A----------------------------------------& x3 I, \. F6 z: D! L& z- S: B; S
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
% @4 t/ Q& _5 _. F在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。% B$ n& a2 _* t+ t
----------------------------------------
6 U, z: U6 W. ^5 U3 V( C7 D2 chttps://github.com/guillaumekln/faster-whisper
: B$ {; V4 u! h安装如下:; ?% ?; N6 O2 l+ W0 a' t% a# b
1, Windows 105 R0 w6 c9 @6 o  n& l* q
2, Python 3.10.11, k6 J% R% n. G7 u- a& h
3, CUDA 12.1
) k/ Z. t# W, U* U3 B6 |% K0 G3 }4, 在python 3 中安装0 M; b3 b$ Q# d6 j! P" q. m
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117  ]; h; |, \1 N$ ^
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。9 Z+ ]  J! v# T% \& K
5,pip install -U openai-whisper! b' U* c; C# ?
这是向whisper 致敬,可以不装1 A0 J( k. u5 @& J6 r( S
6,pip install faster-whisper
! g( y  V) z. }3 y% ~" f----------------------------------------
4 [1 G0 ], a* t) k& i6 p- q) Uwhisper 我用的命令行,faster-whisper 我用的是python。$ ^3 l, F; q# }. O- g( j
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:5 r# Z6 W( @% g3 A

3 l3 Y" i/ t; S% A+ d/ Y----------------------------------------; i& t1 @4 z( w7 q& `

4 D7 f) Y- h9 ]  e% y# I1 |0 q' r5 Bfrom faster_whisper import WhisperModel) a( N  t; I0 s  F6 y+ |6 }) `

, \: U" ]3 N9 Y5 E! jmodel_size = "small"$ ?9 q0 I' p% A# k
. s5 g7 A8 [1 a- U$ O" f/ R4 c
model = WhisperModel(model_size, device="cuda", compute_type="int8")/ Y$ b5 P1 l! V$ c+ T& c
: V6 V, u7 R$ Z  ]
segments, info = model.transcribe(
4 ^' v( t! \! s; o    sourceFileName, , w* Y' ^% J5 v$ O9 V4 C: I
    beam_size=5, 6 P/ R7 s8 ~3 P  i- r
    language="en", 8 ?5 d3 ]$ R2 ]& D8 B
    task="transcribe", 1 e7 q! `: I. W5 _( d; K7 g
    word_timestamps=True,
  [- b+ W& m& U+ _    initial_prompt = "Hello, welcome to my lecture.")
) `8 F, `  n  r% O: q
+ _( b5 B- P6 j1 A1 u+ P) H1 Nfor segment in segments:
8 N% P$ N8 h% N7 x    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
8 N( w8 T9 u+ j, \7 M1 ]8 x1 ], K: _# J% y. T5 g" F
        for word in segment.words:
$ B0 P. u: b6 Q" }- h/ q1 \               
' j5 v- Q2 U8 D' ~" _----------------------------------------
3 x$ Q* \9 W$ G
( |) l) r1 e4 l, t2 f2 T代码说明:+ _& Y) S* A0 r+ M" r
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。4 Z* |0 O& J' X5 ~8 G4 {  x- B: w2 q
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。0 }0 Q4 a# K. V, _9 Y
2,segment 本身是很粗糙的,做字幕勉强能用。
( X" L: ^# T& M/ V3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。, j* x& N0 s2 |: z0 O! Y
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中' d9 r5 e% u) X: \4 p. [# O
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。) _* }1 g; X- n7 d/ U8 g. X+ f
5,model.transcribe 中参数说明:$ L4 U: e0 y- L/ Z2 g+ V
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数1 ^/ R# T3 c6 W- |9 i
其中/ p7 \' `' S1 U# c3 v
    word_timestamps=True, ) M+ f/ L0 X2 _: H
保证了你能拿到 word,否则是拿不到的
2 g+ N7 d- B# L% V: r" g$ [    initial_prompt = "Hello, welcome to my lecture.")$ |0 A2 P% O% O. b
保证能尽可能准确的断句 punctuation,但是不是决定性的。) R5 S* k! L8 t: e- M
其他参数可参考源文件:
# s' h. u5 g" K, n3 H" ]/ d1 ~2 ~https://github.com/guillaumekln/ ... isper/transcribe.py
  R  u, b; y( f9 g152 def transcribe(
2 e) Z) u9 P3 B4 y0 C; {从源文件你可以看到是支持中文的句号断句的。" Q5 C1 e" t4 S  `2 C! {' L7 o! }
5 y7 r6 i) z( R: D* N1 A1 {: V7 |
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
0 p3 j0 q- Y) u5 F) Q" \4 ~7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
/ g9 I( c  @5 \7 {; `* Q8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。3 n) k' n; W8 t# [
2 r9 N( W8 Q' F  Z& R
9 B& H0 ?7 G. K! K( k1 r7 {
' C3 D9 E1 ^4 h5 @* z

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-12-24 03:52 , Processed in 0.028936 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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