设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
0 i% q$ _9 j4 P. z1 l7 K
' X5 m/ |" J" }' x# b借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
/ f/ E( f  |1 ]$ L4 S% r+ I9 L, D效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。* j) R5 ?  S6 v
----------------------------------------
# p6 M) O9 y2 u9 b: N显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。3 S" f/ v8 J1 S# _' s, Q- ~# U+ \
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
9 U& l$ `2 _# T4 r2 n----------------------------------------; o% d, A% s$ Y  H1 i! n/ l
https://github.com/guillaumekln/faster-whisper7 {/ y. `5 @2 H( j. Q' ^
安装如下:& l+ F2 U5 p9 O. T0 N" P
1, Windows 102 N0 _8 @+ h+ s& M, u  {
2, Python 3.10.11
; R7 m$ `; k( K4 k9 L3, CUDA 12.1
2 A- J2 U( Y+ f" k$ R4, 在python 3 中安装  Y* }+ p% X( x" ?* b( b& B
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1172 u' R; j7 ~! f' o9 i0 W
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。/ u; l% U1 q# }0 v/ k' l
5,pip install -U openai-whisper
4 P/ M' z$ K3 I" T这是向whisper 致敬,可以不装
# ]( L+ o( I/ v$ S. `' v" k6,pip install faster-whisper
/ Q) B9 \1 f! M: y# }----------------------------------------
7 G+ l& s: o9 f1 J. ~9 z: `$ z9 hwhisper 我用的命令行,faster-whisper 我用的是python。* F7 Y! s3 b2 y* x1 [7 R$ J& q2 V% r
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:1 R" K' T4 S. H5 J' ?
- I! [  z' G3 e/ R; X# M: h
----------------------------------------
: p* z) }7 `) ?* ^
. [) w  K  I2 S( mfrom faster_whisper import WhisperModel" o1 y6 N5 _) _8 W
6 d& w+ a! n- F1 J2 \8 n- T
model_size = "small"( v- H+ C; D% W6 J/ y

5 }( H' c$ c" kmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
6 G. {5 D& @! J6 n
1 @% |% F/ \" m" x. T" [" qsegments, info = model.transcribe(- w5 g3 W+ S* Q3 F) R, j% \' n1 P" S
    sourceFileName,
* g- W: M3 {/ @/ d+ P    beam_size=5, ! D; F2 A$ O. ^" F0 X8 v. d& O9 l
    language="en",
+ k! T" W6 r7 v6 j4 O    task="transcribe", ' }" ]/ A! \' m
    word_timestamps=True, ! E7 [+ f7 ?- s! l  f$ _
    initial_prompt = "Hello, welcome to my lecture.")9 }6 r9 X4 F6 w7 F; q

/ |) U% T9 }7 |2 ]( V! G* P2 ^) w" R% pfor segment in segments:
; T. i# b0 ]7 R% z    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))& r% Z) l' ~# a2 P& F1 ?

  V: w8 b4 t' d        for word in segment.words:; P8 a6 k" `7 z& x
               
) F- x( ]2 @- x; X$ m3 ^( U  f----------------------------------------1 W* v. G$ }2 i' r' Q# V5 z

- R# M5 K0 h5 N" C' w代码说明:
/ p9 w7 Z& t& j2 ~0 g3 R5 K* r- @1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
) v! `' x( o; u! F但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
( U2 B+ {0 @5 M( j5 H1 P2,segment 本身是很粗糙的,做字幕勉强能用。
- v/ `5 q4 l: ?; d- Q# G3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。! h8 g3 g3 w* j* w# Q+ j
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中- V2 x8 I) x5 P) [( V
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
8 k+ q9 K7 T5 t5,model.transcribe 中参数说明:! U8 X4 C- Y+ b6 N0 r8 `
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
7 E5 `- `; Y2 l" f0 \) O其中
' u0 x" H" D4 J( J2 M2 H' P" J  P1 m    word_timestamps=True,
) G1 _% z6 H. V保证了你能拿到 word,否则是拿不到的
4 e! F! u0 V5 N- ^" \    initial_prompt = "Hello, welcome to my lecture."), W" R% ~. }, ^- O4 o- s3 c
保证能尽可能准确的断句 punctuation,但是不是决定性的。" e( `( X8 H( L
其他参数可参考源文件:" T1 J; C& L* x" P5 U( ^
https://github.com/guillaumekln/ ... isper/transcribe.py$ L, I( M, d, _5 U
152 def transcribe(# a1 f, `: H6 k/ K
从源文件你可以看到是支持中文的句号断句的。
2 E7 `# u0 [6 |( r! p" M. Q0 k$ n) @
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
1 i4 a0 ^- ]4 W0 Q# v7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。+ }  O. l  G* U9 a
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
0 S( _* H; S, b" Q0 f) T( z( ~
& A( P- `: Y6 }  g; ~! T7 J8 p
8 c" N1 Y+ v  S: A: _5 V. R3 d  T; x
' |9 n7 s8 w9 b9 h

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2024-5-4 01:28 , Processed in 0.032201 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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