设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 # \( K9 M: T0 _( O# r* ?
! ~( j4 P3 o- c, F% Z
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。5 q9 S* N8 W8 l# K* V' f3 x
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。7 E4 ^1 Y; A+ i" f1 i/ M
----------------------------------------- G1 C3 M' }8 X$ `' g- v, N( K
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
$ z9 ~* G) m' ?9 }, _在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。, C5 Q& }& Y4 j  U6 x
----------------------------------------
$ G( S4 e: e4 z' \5 L: P. `https://github.com/guillaumekln/faster-whisper
3 C9 z! H  X1 i  y7 L安装如下:. W( t+ H" I3 h8 P6 o" a" v; P
1, Windows 10
4 k* H+ ~; S+ \2, Python 3.10.117 H1 {0 |% ~; [% U' E- a7 O' S
3, CUDA 12.11 P) e8 c( \" P! Z) H; @! c0 U' @
4, 在python 3 中安装0 E) R, _; i+ z" k5 E
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
7 w/ }5 R$ H, T% `- A这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
& p+ d. w% r" D0 ^. A5,pip install -U openai-whisper
) F5 r4 _" J  R1 a: U. H9 V这是向whisper 致敬,可以不装. c: q0 O$ G0 G+ D
6,pip install faster-whisper8 Z6 x4 N% v/ ?+ i' v
----------------------------------------% m2 @0 n5 V( }+ x
whisper 我用的命令行,faster-whisper 我用的是python。0 G2 ?* A: P3 [0 z9 e! |& a
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:# J* F8 Y: e/ w8 U! K
' O/ i( d- a* j2 y* h5 o
----------------------------------------' _. [, P% e0 u  ^+ f

1 C1 j" R% G( X( q& o/ [9 Afrom faster_whisper import WhisperModel
3 a, ?) a. J4 S! ^+ n; m8 P
5 b. b1 z# w$ j% cmodel_size = "small"
0 z, ^( w$ g1 O0 g
1 ^4 L5 V+ x) L- Amodel = WhisperModel(model_size, device="cuda", compute_type="int8")5 d2 d  z7 R- n& K; c# ?2 |

0 S2 c3 b9 t+ p; ~5 n- g7 ~segments, info = model.transcribe(
- w- {! @1 @- w    sourceFileName, ( [" x0 Z) y( [7 A
    beam_size=5, . l5 B5 Z9 y$ p; y
    language="en", 5 O: a5 |: _; t# B3 _& M1 g# P
    task="transcribe",
' ^& l/ y1 o7 w: q% j$ e: L! b' ?7 x    word_timestamps=True, , Y* x; d' {0 _" L+ U; x  O
    initial_prompt = "Hello, welcome to my lecture.")
+ y7 _* Q& n5 p3 g% ]6 {! X
$ Y# ^7 U. h5 n1 A  _for segment in segments:
3 R% x4 J  F% \: z( [% w    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
9 l% d9 d6 I* U! `  z+ M% |0 Q; u( r
        for word in segment.words:  \# O1 ]4 o9 s% u- M# E2 Q4 A
               
: P5 q/ M1 x+ }  H9 v0 u: X- Y----------------------------------------- Y% u. C) q- q( S0 q

9 D+ a% E% J: c3 B5 f2 H' t6 H9 X' H代码说明:' Y5 H+ \( q' v3 d4 t
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
/ x4 D* f! _. \: z+ r但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。$ B0 K/ K% N$ j" {
2,segment 本身是很粗糙的,做字幕勉强能用。" ]' O% _6 l+ ^
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
* a" K( m& f% P3 ~4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中6 V3 K! g5 N4 K8 K4 h8 ?
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。5 p& g. e- f- h3 x( E
5,model.transcribe 中参数说明:
0 |1 C% m3 O. v) R) K/ n. s你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
- q" ]( U7 t' k其中. E9 J; Q0 X1 ?8 N. L4 o: i) h6 p
    word_timestamps=True, 0 Y9 `6 @0 i% a! E0 G6 l
保证了你能拿到 word,否则是拿不到的
2 i( t6 p: \) f4 B. m1 J& y$ p3 U    initial_prompt = "Hello, welcome to my lecture."); }9 {0 L/ |7 Y* L) y" ?
保证能尽可能准确的断句 punctuation,但是不是决定性的。+ G# E" J. o( V+ q
其他参数可参考源文件:* l. O: l5 v; h4 t2 ^: P8 |) w
https://github.com/guillaumekln/ ... isper/transcribe.py
2 r1 J7 V3 z! \" G( @7 C' O& O# M5 J152 def transcribe(1 A7 K8 f5 |" n" T. ?4 {
从源文件你可以看到是支持中文的句号断句的。
; @" p$ m! j5 |: P  G4 i
, ^  X3 {8 O7 S9 v- b6 g6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
: Q+ v; \/ l! z7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。; H2 G9 K0 i. A  D( x
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
2 a, K+ l. a8 {, @; p; Y) }* M
2 N/ i- b7 ^* t0 d2 A* J
$ }7 E7 Q6 H' P6 b7 x4 N: X
; s5 l% Y2 c7 V  v$ C  j

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-11-6 19:52 , Processed in 0.031113 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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