设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
5 g7 A! j/ x1 o4 ?1 p7 T& B. Y# c# z( b. f/ A3 S
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。3 \8 v3 n5 u& A& J3 i
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
8 X8 n- `7 G( V  g4 W  B9 w, ]+ b----------------------------------------+ {1 |2 p9 I; X, h5 M" X2 W
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。- Y$ m( z7 z5 B/ ?8 G7 w
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。3 l' @$ C+ w( k$ H
----------------------------------------2 B$ Z  c4 @1 h
https://github.com/guillaumekln/faster-whisper
( N0 w  q8 ]+ i2 e( t3 J安装如下:4 {/ j6 ^. m9 m0 s' X, `8 o
1, Windows 101 e, C8 K2 Z( K) U
2, Python 3.10.11# Q6 k3 Z% M' s, y% n9 a' \
3, CUDA 12.1
& {' Z  K6 q* {; _5 J) M4, 在python 3 中安装. Q' o5 Q  d; @$ O
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1175 Z" d$ e& U% [5 E
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。  g( U8 v7 d" h8 f  B
5,pip install -U openai-whisper
  u, N* H7 t4 z, i& z' C这是向whisper 致敬,可以不装
  H- ^/ w9 [# F) W' V, f! M6,pip install faster-whisper# F6 t/ @6 S" Z7 O0 G0 }4 @+ ^
----------------------------------------
) u2 e/ b: K! K/ a6 |whisper 我用的命令行,faster-whisper 我用的是python。9 m: [! t+ V0 `2 Q5 r
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:/ t3 t9 g0 n" c  \  O9 n
1 J& m4 i1 o8 ?& A
----------------------------------------
3 v4 i  }7 k4 @% ~/ Q4 @) K) e% i; ], K% E! Z; T2 L3 f3 w
from faster_whisper import WhisperModel
+ L- Q  ]# e! R% s, |0 L# G; D1 J2 {  E  u3 o7 Y& a; s8 u/ X
model_size = "small"
6 W$ q* F8 b4 D+ ~4 S2 ~$ G" I7 m; K) V
model = WhisperModel(model_size, device="cuda", compute_type="int8")4 B+ U3 n7 F, Y% h
4 v" I6 u, M$ t6 u
segments, info = model.transcribe(& A* P1 ~$ E$ z4 j
    sourceFileName,
9 M+ H3 S- V" ]  L8 @5 |9 x    beam_size=5, 8 W! Q+ N( w* F  h1 \" B
    language="en",
) K" f% h$ w9 E1 G  \7 o0 y* S/ A    task="transcribe", 1 U& U& b$ n9 x
    word_timestamps=True,
: K! x' M6 O; |9 w4 h4 n    initial_prompt = "Hello, welcome to my lecture.")
) A) G9 G, c. A# X4 s
0 w: O0 S4 E' g) Z  _  z0 ^* ffor segment in segments:
3 b! \+ I0 W; i9 {    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))3 c8 v2 O" Z8 F! M  O4 A

7 T5 C/ }/ n, G4 [4 K/ S7 T! s        for word in segment.words:
* `) P3 R1 ]  S  h) P, f8 W' f                0 s+ r/ ?# E' R% e' t2 Q. z
----------------------------------------) A  ]2 l% N- X. \* I

3 k1 C$ g; _+ ~% n. R# S代码说明:
4 @- y( x. |* K; z1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
( R' Y: ~% C3 p2 v但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。: u2 a4 c7 {# ?5 q! s. r
2,segment 本身是很粗糙的,做字幕勉强能用。3 |. m' ]3 D* ^9 e" e1 C* J# _
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
& @# O, o( U2 w3 C; l  \5 V4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
2 O% z) O& j+ ~7 G) ]. f: W比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。" Z7 P  N1 T* X6 R$ _1 n# S
5,model.transcribe 中参数说明:) `+ w0 H8 \' f, H
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数& V9 T% p) o) o. o! A/ p* i
其中
. \# n5 i* x2 u* `    word_timestamps=True, 4 Q6 f( @" D: c4 l  N
保证了你能拿到 word,否则是拿不到的
) E4 B3 }4 G, J7 J, H8 i0 f    initial_prompt = "Hello, welcome to my lecture.")
8 k" _2 s) I1 U- E6 l" C保证能尽可能准确的断句 punctuation,但是不是决定性的。5 [2 z1 W4 z) c4 y
其他参数可参考源文件:
& t3 V; P6 R9 ~' k- z' Khttps://github.com/guillaumekln/ ... isper/transcribe.py
, {; ^( c$ A* H; [2 I5 N0 C) ?152 def transcribe(
) @; y# h" Y0 u$ l$ o: j从源文件你可以看到是支持中文的句号断句的。3 R- o* x  z8 w* P- ~
( T1 Q7 p+ n& z, f  [7 b5 a4 S
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。" r# t4 d3 Y2 a4 u
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。# ^8 {! T0 W' m6 }4 _; o* m, _
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。5 K! s; q% V: Y8 `' u2 l. M8 `, `

. i  B. A7 Y, {- }/ k6 k
6 X* i! e* m6 V
" H% k* @, T3 @

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-9-3 02:30 , Processed in 0.055978 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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