设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
4 y" w  D) }7 }9 D0 D; Z
7 A/ w$ T) l. r借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
" h4 H! l3 a! b) J" k. s效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。, Z6 P7 E7 ?+ Y" Y
----------------------------------------% e5 k3 s, O) s) u4 V! S
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
2 O6 V7 M$ ^1 p+ ?, v1 ^在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。1 n7 p* ?; N0 o% o: ]! c, O" O% U
----------------------------------------3 V1 i. l3 |2 J& q" `
https://github.com/guillaumekln/faster-whisper
3 g: F- J* g% V" _安装如下:9 f8 h& d5 ]7 K. m# M% M: Q5 E
1, Windows 10
) r7 t3 m. t  }, @2, Python 3.10.11  _3 n, L: p4 B/ W& d' C
3, CUDA 12.1
* J) k( T( \% d. v7 ~0 y6 N4, 在python 3 中安装
2 ^9 x' Y6 s" `. L7 hpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117& {1 w0 o/ G$ F& Q+ C: W5 d
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。1 p+ ]* P, `1 n# @  U& B* C& u: X: \
5,pip install -U openai-whisper1 {" r; f, F6 ]
这是向whisper 致敬,可以不装
, b+ X8 c9 k. y. g2 S+ x5 J6,pip install faster-whisper$ }- P: q* n6 l6 X. U; Q
----------------------------------------
1 c9 ]; V  s2 @3 d) |; @+ F* Lwhisper 我用的命令行,faster-whisper 我用的是python。' U. J: [/ k4 _9 K+ @, L: e
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:# Z  u# p/ H8 }
4 {" b0 Q2 w9 [1 j7 `4 @
----------------------------------------
; X8 ]; d) M$ t6 D, Q! K
/ C2 @. K" a8 [% Ifrom faster_whisper import WhisperModel1 A0 C+ ~  P6 `% w! f' P* z
6 N( j8 G/ b/ O4 g
model_size = "small"
" e/ U4 i: `/ d* u9 `1 s1 R
1 B+ ?2 w% T! }# U5 S, [model = WhisperModel(model_size, device="cuda", compute_type="int8")
8 A& x* E$ P9 u( z- t
1 d! @  d. s5 Q5 M5 |- `segments, info = model.transcribe(  M6 Q! e1 E& k, z5 Q
    sourceFileName,
! g: l  @% |+ M  f8 m    beam_size=5, 2 n5 i$ a/ D7 @5 R+ H8 L
    language="en",
4 p* M  G$ A* o, T9 z" R2 c2 m    task="transcribe",
/ J6 o; c+ U; u8 u3 Z    word_timestamps=True,
/ ^$ e  X: s; b+ V    initial_prompt = "Hello, welcome to my lecture."): i. X) C9 _/ }  l
# ~! Y, x1 t8 z
for segment in segments:" J9 O, i; z! n, L) ?6 ]
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))3 `# d9 y" s! d: x, H
6 d) z2 o+ R  a4 t) q
        for word in segment.words:
3 a, C3 `6 o6 h% e+ Z5 S2 e# U               
0 C9 Y' p" ?7 q/ J& f4 i----------------------------------------
1 @- b4 m' \6 K/ I2 w" U+ w! H
  ?/ k! M/ ~: Z/ N  s1 g: y, u8 S代码说明:
' a5 E2 z. Y/ J3 D. \1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。) `- C" A  f+ j
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
3 X9 C2 n" M. \$ g& I7 W  [% l& q2,segment 本身是很粗糙的,做字幕勉强能用。
* ]4 W: l. K: u) n* w; J0 H3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
7 ^; O7 S+ \2 b2 O% W4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中8 }; u7 X7 Q6 I# z  t
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
- E' Q& t5 }9 N1 }/ J5,model.transcribe 中参数说明:
1 H7 ~" r4 [* k3 f3 r* w你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
! V9 O0 P8 d$ v9 l) E, n# v其中
) c" D/ N( m% K- V# f! a/ ~! f, T    word_timestamps=True, . s: C3 X# u' ]5 g+ H) J. v8 C% u* k
保证了你能拿到 word,否则是拿不到的
- o, ]$ p1 g" {4 R% G! j6 p  |    initial_prompt = "Hello, welcome to my lecture.")6 }7 V! ^$ w2 x' c* G- I' h
保证能尽可能准确的断句 punctuation,但是不是决定性的。! t: U/ ]/ n4 i) G! b' N+ ^, l
其他参数可参考源文件:
# X  n0 ?5 l0 `0 h% c2 }' Xhttps://github.com/guillaumekln/ ... isper/transcribe.py" k% h( C; R$ x) l  H
152 def transcribe(+ `5 {, k' @9 B, U6 b0 M
从源文件你可以看到是支持中文的句号断句的。; o( m0 `& C5 q/ d8 _* d. K
4 J: z& R  l  l5 Q, L) {
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。0 @' o$ d8 G$ E. m' y
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。0 N6 f/ w- @; D! }# j6 ?0 ?
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
& W9 C* k* V3 ^: L9 o) |) m( G
& j- V) v* q5 ?/ C8 ^7 U # Y3 e4 q3 k6 a4 n
/ |) f' Y2 H# A; r/ I* _, k: z

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-16 03:59 , Processed in 0.055419 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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