设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 : c& K9 z! |: x# D

5 g5 X( M6 s0 u# F6 r/ \- Q: _8 Z, G借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
* G" v. N4 |7 G/ L' i) J2 V效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
4 b% N$ A: G1 e6 u----------------------------------------  Z0 R8 T! X& x) f
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
. G( w) w0 Q# n0 ^1 T在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。" [5 b5 `* K% Z% z
----------------------------------------( |  h! i; |) c# r
https://github.com/guillaumekln/faster-whisper
" U1 J6 r4 P" q  q安装如下:
, o7 F4 S) ?2 q# d% |7 A5 d' y1, Windows 100 y! X1 n3 ?% ^; \& ]
2, Python 3.10.11
$ `. V% s% i2 R/ m3, CUDA 12.1
9 F! u% v  s, f! T4, 在python 3 中安装  G, L' {5 Z7 r, H, F; D% \
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117* X- s7 D8 ^. ?6 X5 D$ S' e
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
0 z# o/ C2 C% X5,pip install -U openai-whisper/ K/ @; t  k7 I5 w: n- L5 @7 s
这是向whisper 致敬,可以不装5 ]& h3 p) j9 \+ S
6,pip install faster-whisper
  k( C" Q9 B! T4 F9 M----------------------------------------7 K1 `3 P0 M8 M8 V
whisper 我用的命令行,faster-whisper 我用的是python。
  c2 J/ \! \8 W  X! n下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
5 y+ [3 l7 l; V! n" o
) z1 i% b0 W% b! j; o/ N----------------------------------------$ W4 U! N4 g8 ?7 x4 X" G! I

, y. t7 W5 i! g* Y' p. sfrom faster_whisper import WhisperModel" W' s, R6 W2 A  i! u/ c

  l$ K9 ~$ Y  N% I0 Qmodel_size = "small"
2 z% K; w6 h$ r9 _
. \; u4 K: U) p! d$ ]. ~model = WhisperModel(model_size, device="cuda", compute_type="int8")
* Q$ n3 `4 f9 a8 l) R, ~" g! `
6 N1 u' v$ J" @segments, info = model.transcribe(  |5 N0 ]  g4 _; b: Y( G" D' V
    sourceFileName,
! t# J, m$ Y9 Z* H# P( j    beam_size=5,
6 [; Z4 T4 E: ]( l4 M8 R    language="en", ( I$ u: C3 q* K+ O; X, G/ f0 ~
    task="transcribe", / Y0 d: H$ A8 h% C% ~
    word_timestamps=True,
0 m; X' D' @2 N- r    initial_prompt = "Hello, welcome to my lecture.")! t9 o: @2 J0 n, z/ ~
7 L9 F' ^/ z2 ~: b$ p+ h+ \% U1 G
for segment in segments:
# J+ }$ S7 {( L( r7 k    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))$ W4 M9 Q% \! w; B7 G5 A4 _. X0 [

. m7 n# T  q- _) S) N5 r6 m        for word in segment.words:
, \& \1 s& h2 K) E# C' V                , L/ z+ R, |  b+ G. F
----------------------------------------7 k+ N* E! j) x0 @3 M
# D! \! h# h$ J# u! I/ p, c) Z
代码说明:
, d. F2 W6 ~: u! A  i$ l2 g1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
9 v* [) J/ K4 h2 j" o6 @但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
4 j% k7 G" O$ j# }$ V2,segment 本身是很粗糙的,做字幕勉强能用。
! E. V. @$ ~" q; s3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
) f' ~2 A& v0 W" @( E6 N$ r9 s4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中, T0 I9 P) G. N! M7 d& t& D1 s
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
  d- N' l7 w. [5,model.transcribe 中参数说明:$ `& D5 H/ E! J4 F2 c& w
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
. U- V6 s2 I& {( W2 w其中
  D) E: u: K4 Y$ ?6 E7 j    word_timestamps=True,
) E9 [0 z2 `( ^- C3 v* Z4 k保证了你能拿到 word,否则是拿不到的
# V! Y/ O8 ?% J9 H6 l2 O    initial_prompt = "Hello, welcome to my lecture.")
6 i5 w& a" `# S) o( W保证能尽可能准确的断句 punctuation,但是不是决定性的。( I& i3 T; [: S4 K: u/ Y- M
其他参数可参考源文件:* P6 S4 M( b! \
https://github.com/guillaumekln/ ... isper/transcribe.py) u1 s. m* I- s9 W5 k
152 def transcribe(. y$ M, I- M  A$ ]) I5 }8 L
从源文件你可以看到是支持中文的句号断句的。5 Y5 z" x4 z( ~4 C* D" F
) A2 I* o) f& g9 y* |* K
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
. X  l, Q+ z- a7 k* [7 S- ~7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
* c4 d* d; g. J7 U: @* |8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
. n6 @9 K8 d" a' b5 @" w  U, x* ~; c- f

& `- F8 w8 D# B% o1 M4 E
6 f" N( A+ d, s# Z( a1 A

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-9-20 18:02 , Processed in 0.034975 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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