设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
4 A5 z: t3 @7 ?$ O9 v
7 j. {# M1 S2 U2 y$ Q借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。( s$ ?7 l) M; K) w& ?7 G( ]2 }! ?
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。3 T' I) _  I4 M: K5 ^& l  l; U
----------------------------------------
% g# x2 l; _3 d5 ~$ I显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
5 d: W; p6 l1 q6 U在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
+ q% i+ U! k& H; L  O! \: Q----------------------------------------% E1 h0 L) @. e/ u4 `! Z# h* T
https://github.com/guillaumekln/faster-whisper
2 f& I' g1 b% a0 S4 |0 X( q9 l, J9 E) n安装如下:- a) i$ b( U- J2 F
1, Windows 10& A- n$ @% u! Z7 Y* t( Y
2, Python 3.10.11' G8 C; U8 M6 [5 C' p( [
3, CUDA 12.1* Y* I+ E. H3 ~; ]. U$ b: }3 h
4, 在python 3 中安装8 b) w8 u$ {/ @( L* e( _
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117# a2 C! L3 ^( z- d. C. n
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。: Y  V+ f# H/ |
5,pip install -U openai-whisper3 Q. P7 v* F) Y: ^9 Y. N: ]
这是向whisper 致敬,可以不装
" `+ t. A5 F2 O0 B6 n6,pip install faster-whisper7 J5 ~; M5 a+ {$ g, N
----------------------------------------
# ]2 O, @5 l1 f  E* qwhisper 我用的命令行,faster-whisper 我用的是python。
# W: \' e/ M: \3 }+ e- z: o下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:* c$ k5 m% N! Y- `: |! A

9 B% A9 V6 S; y----------------------------------------/ r' R9 R) c4 u) B

" y+ K5 z' S2 t: q( d  k% `4 Z+ F4 xfrom faster_whisper import WhisperModel" L. A3 i3 t5 E

# S# j7 @9 g5 r- \) ]$ u: O! Mmodel_size = "small"  F; W; Y3 }7 u& v

9 {1 W( J1 c" `# I6 ?model = WhisperModel(model_size, device="cuda", compute_type="int8")
5 L) u' k# d3 `) E# Y8 ?
: [( [, |9 r1 j7 L: H! x9 Asegments, info = model.transcribe(8 B! T/ l7 H* X/ @$ s; i. J7 P
    sourceFileName,
- c0 |! y' K) y0 v  k    beam_size=5,
1 W- m' [9 B' l: y6 P  v7 r. S    language="en",
: f: C0 v, k# ?+ y% \; [3 J: \  Z    task="transcribe", ' k, @+ R$ E; o5 b
    word_timestamps=True,
3 V) `' S7 L* r/ v- O    initial_prompt = "Hello, welcome to my lecture.")
% M. J; m7 O1 y; B
, Q- [& i# L! d! C) p4 lfor segment in segments:
) P* ], M) i. H, j0 H. t2 m- H. Q% Z4 b4 B    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
/ f7 B/ H+ s+ A: u. v! n; `$ R
0 v6 Y" f( K" ^6 [1 h        for word in segment.words:
; k. F# B" z- ?4 \  S+ N               
# j8 Q" ]3 ^4 F) l: R5 F  a- a----------------------------------------+ K1 Y( B/ I3 N
7 K) y& ]' F# \( G. F3 a
代码说明:
2 R3 v( N6 {. v4 z1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。* j# ?: P, M- h, ^! e, ?
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
# ~! a; o  u1 ]1 F4 X$ C4 N* d2,segment 本身是很粗糙的,做字幕勉强能用。: L$ u% l! V) a  V( J2 x
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。$ n0 G, j- m. P$ r  v9 |
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中% f! s8 M+ `+ u5 w
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。' V, ?; O) J* V9 j' i& r% y. G3 W
5,model.transcribe 中参数说明:
5 l* s: f  ]9 G+ p% g4 Z你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
- p4 s4 A7 K+ W6 Y* _  Y% z7 F其中5 T* H# Y7 z# r" I+ n2 t2 u
    word_timestamps=True,
3 i: J7 k1 U7 o+ C保证了你能拿到 word,否则是拿不到的
, P* |" j9 V$ I2 R* E. N    initial_prompt = "Hello, welcome to my lecture.")+ ~4 a) ~8 Y1 S$ T% L1 j+ a; f
保证能尽可能准确的断句 punctuation,但是不是决定性的。) Y# @+ L: K% y+ K
其他参数可参考源文件:) q. C' l+ I0 _2 V- E; M* G# o, K
https://github.com/guillaumekln/ ... isper/transcribe.py9 j: m: {! F2 K- \3 {
152 def transcribe(
5 _) a$ l$ F, u& W, L% ^! w8 M8 K从源文件你可以看到是支持中文的句号断句的。
' g" n7 [9 `) h3 d& i8 w( x8 J' h& x6 v% Y; E* t3 |
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。$ p; W( a6 W' X0 z3 v6 k
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。+ N* e# Y4 B; z" C8 d0 U
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
& Q2 v; _: D* a& X  l4 `- ]7 C# @; M* w& q9 o! }0 K! a

( y' T- U/ f: D! n1 p6 {$ F  W- C+ X+ L, S& R& \5 D' d$ e9 p- [

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-6-24 23:16 , Processed in 0.056906 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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