设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
6 R. w: g# ]8 z0 K' ~& R3 \4 u4 L* E# z+ S2 D, X. Z, |' Z
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
5 c* q4 w1 ]1 i+ Y( r# V) u, d效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
: b+ T* x9 a$ C# G4 V----------------------------------------) |( J8 r1 L( a0 N/ V
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
# X$ b- @8 w" |/ Y5 O8 A2 ^) U4 W- d在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。2 v4 X, ]3 o5 G/ O- ^" j
----------------------------------------! O: v9 U0 X( I9 s! C, S
https://github.com/guillaumekln/faster-whisper
+ g( E: k  y' y+ ?安装如下:4 P4 P2 Q0 ^8 n
1, Windows 10
* w; m* V! l( `+ x- u$ @& [+ a. J2, Python 3.10.11/ Y6 k# L4 z3 `; _8 C
3, CUDA 12.1
8 \/ g# R6 ?( s& N+ i4, 在python 3 中安装3 c1 X6 ?! L7 q+ E, y( t% R6 S
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117+ G2 {! i- t# }5 B
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
5 Z5 v, d, d) e4 K4 I5,pip install -U openai-whisper$ M. x3 J. V' r, c5 D
这是向whisper 致敬,可以不装' o& B6 M1 ]9 Z% O4 l- V
6,pip install faster-whisper( D. i9 i/ i5 {+ L% Y" `! o, ^
----------------------------------------
/ D3 f2 F/ P4 Z& Q- \* [6 uwhisper 我用的命令行,faster-whisper 我用的是python。+ a$ l  q9 V$ P  [- N
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
8 v$ ~/ a$ d$ y6 T+ z  t. r; X$ h4 u) y; X& v  a
----------------------------------------3 Q5 c9 `: o8 B; h

( ~% I' ~$ r' G4 V& @6 [from faster_whisper import WhisperModel
  Q' X3 x  [6 R3 ?4 d$ D3 L* o0 i
model_size = "small"0 |/ W7 k& ]- k

: ~0 S2 r- r2 a) S4 K: S5 emodel = WhisperModel(model_size, device="cuda", compute_type="int8")
& ~5 H' O/ S2 j5 L- l( [$ \7 n; L( h4 V5 [
segments, info = model.transcribe(
, k& B) E+ d0 S% ~/ I    sourceFileName,
/ w8 S( h: r9 g) T5 ]    beam_size=5, 7 A- o4 K" w; z. Q+ K* R9 s
    language="en", : M& y% C. p: A" q& K3 Y( @7 C5 C
    task="transcribe",
" V  c- R+ ?) y% p- N% \6 T    word_timestamps=True,
  g, m2 A) \; i+ q: K    initial_prompt = "Hello, welcome to my lecture.")3 P$ x) A% v* a: }7 K8 n3 {- t- _4 }
1 E9 Q4 Y/ w9 \! X4 r- D
for segment in segments:+ L6 `5 L$ y" g
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
) c" K; C4 M0 A9 f( L0 Y
9 z+ _7 R* o  W5 n        for word in segment.words:
+ z# D  r8 E, t; h' |2 O                , F+ {2 c( i, E# Z% V# t3 U
----------------------------------------
% A) S, k0 H3 @' ~- t4 }, n4 T" `3 ~# p3 ]' u
代码说明:7 o3 T3 Q1 Z: n' t% t2 `+ Q
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。% T! Y0 v; }5 o7 {$ S$ F: Y
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
8 |) h" C& T* i$ b0 V2,segment 本身是很粗糙的,做字幕勉强能用。. H7 J  p5 o( a7 P
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
1 |% T8 V2 X2 ^2 i2 y4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中" }' @& K0 Y' ]  ^
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。3 s6 k; z- u; Z' I, N5 e
5,model.transcribe 中参数说明:
1 C" ^4 u* R. n3 ?; j你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数9 j$ f, }# u1 R# F
其中
0 r" Z% ?1 Z! \) R    word_timestamps=True,
/ f$ H4 h5 R1 x保证了你能拿到 word,否则是拿不到的
( w% n' R) L4 z% L% A    initial_prompt = "Hello, welcome to my lecture.")
) t* t9 D  V  s6 E; }保证能尽可能准确的断句 punctuation,但是不是决定性的。
4 B/ p$ l  M2 g0 e- Y其他参数可参考源文件:( l6 h6 b1 t$ r& u1 ^! Z: j' j
https://github.com/guillaumekln/ ... isper/transcribe.py& [/ H3 n8 c' d# d$ x- A
152 def transcribe(* g8 H) x0 H" U" `$ x
从源文件你可以看到是支持中文的句号断句的。
% p0 }+ ^4 ?& P! ^; v& ^+ c# c9 {- k* Z+ P) [2 e; [1 x! }
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。( M/ \" g, a' `3 g% P# G
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。6 P, G- r* y( w0 t( l6 H
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。1 W! E- I1 E  x9 q& r: |* f3 e7 b' v

) |& }3 C7 ]9 X$ j  I 1 Y- ?3 y" W7 ?: X6 p: ]. ^
# d. N* v% p6 {* O

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-10-22 16:25 , Processed in 0.054061 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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