设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ( B. U) o2 _( B% R5 g$ H" G
* e6 s8 m: X% o0 m
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。! _; D; W  A, _0 r9 r
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
. ^4 B6 K# W4 z& a- r  C- `----------------------------------------
+ c- }6 [! M) |0 x1 z+ U; v: j显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
) j8 P' X8 q' q5 a) r" d在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。& D/ ^* G: H# q( n7 f
----------------------------------------+ E3 b# X% h# G* Z- n
https://github.com/guillaumekln/faster-whisper( E* U6 B* D% ~) \/ |
安装如下:
! R+ J7 M9 O) \6 {) O8 m* R1, Windows 10
! P. W1 J0 W2 d1 z2, Python 3.10.11
  s7 |9 Z( F; ~& q3, CUDA 12.17 u, t' p6 ?& j
4, 在python 3 中安装6 G2 v; M, Y; f, Z
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
& z2 U' Z$ V6 W这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。9 S! S2 H( B1 n/ h% S0 k& J
5,pip install -U openai-whisper# A& B% O% G/ T( Z: K& g
这是向whisper 致敬,可以不装! W# X. |8 W$ e2 N$ B% H
6,pip install faster-whisper7 q: `2 V7 b9 v! D% z0 l
----------------------------------------' Q" \& e" o6 s
whisper 我用的命令行,faster-whisper 我用的是python。
. A; Z3 A5 I" A+ j, V# D4 x下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
* t5 G  E( Q+ l8 G+ s2 }* R+ Q8 [+ j
----------------------------------------( t, c0 H" Z* c+ ^) [) x

0 o2 n" F1 [( B$ N6 v* ]from faster_whisper import WhisperModel
* s0 O* i& O. J: ?, o* s3 N, T+ s# q
model_size = "small"
( I! H. x% k* S7 P1 j: R8 ?( T  ^1 x! ?% M2 x) N5 b1 q
model = WhisperModel(model_size, device="cuda", compute_type="int8"). D  q' F- B: A2 E& [

2 s7 F* ]6 k6 nsegments, info = model.transcribe(
3 x! C3 A7 d  Z6 T: r    sourceFileName, 5 w. {5 g) D( Z+ v) e# J
    beam_size=5,
! Q  D0 Z2 ?- v! ?    language="en", - S7 h' ]+ D" V4 a3 O  I" J3 l
    task="transcribe",
& ?$ U% y6 ]: U! b3 f) x    word_timestamps=True,
% d# p. ?' q" \" r0 T- L# G/ [* Y    initial_prompt = "Hello, welcome to my lecture.")+ r7 O% f  [8 ]2 ]9 P

6 n4 ~# {- N$ r5 Efor segment in segments:
" j; d3 g& n" u" l9 v  _" y    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)); |& ?  S1 ^4 [9 T- e  B
+ @- ]  z& R: k2 q1 l: G5 f
        for word in segment.words:
: ]4 K: ]2 G$ N8 C- h  G# H% y               
; a* c& F  V$ m$ f9 V( e: j* v----------------------------------------
. J) z! @+ H0 v" A  b% f1 W6 j# ^3 F0 ^. ~# p1 ?' v
代码说明:
8 }/ l- f( l9 g* t, \1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
) U) H$ R! [; G% Q6 G  Y1 l$ z+ C8 R但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。9 Q* t1 m5 i: `; D' X
2,segment 本身是很粗糙的,做字幕勉强能用。
) U- g* ~" e- Y) B3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
; [  }  n" u8 t; [# X/ D4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
* F' s) x$ W" B1 `) U8 c) X! X比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
" E% u" R% S) ?% ?/ `$ R" b5,model.transcribe 中参数说明:0 \! t  E, j( Q8 e2 `6 ]
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
" z; o' F' k0 s- O其中7 c! {1 E" s" [1 t$ d( Y- K$ [
    word_timestamps=True,
" e6 `. n6 n- R; R. v保证了你能拿到 word,否则是拿不到的
: H4 r2 |- b7 M, S) n) ^+ T0 U    initial_prompt = "Hello, welcome to my lecture.")& F8 i' x9 n* X& w) s
保证能尽可能准确的断句 punctuation,但是不是决定性的。* y6 n* N% x5 F
其他参数可参考源文件:
2 U/ h/ f- B" I3 {0 e0 hhttps://github.com/guillaumekln/ ... isper/transcribe.py0 L, {. }+ x$ ~! A% M
152 def transcribe(8 Q1 b# F% o; A' ?% i: V
从源文件你可以看到是支持中文的句号断句的。; v# X& ?0 U" }0 i( X" u) g

. V9 n$ f1 a( N, s6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
1 p! |. J4 \% ^$ h2 w9 v7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。+ W* {2 S6 r" A7 ~: ]# |
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。1 o# r3 w3 V" N4 J5 t

+ I' X* X1 a8 A$ X& v, p
' E0 D3 _' S: l0 T0 f$ W
; D7 U; J) f/ A: G) m# p, v

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-19 23:57 , Processed in 0.060492 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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