设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 - j. j+ o* c: O* l/ X# g) W. c

; h/ H/ \; f& y7 ^借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。6 e0 h# c2 ?. J1 t/ U& d) X3 A
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。! R8 C; H; t& O, p0 j
----------------------------------------
& \# e3 U6 C- R# z显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。" q! r8 _" u9 Q$ E% l
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。* b8 R6 B" `4 a
----------------------------------------
1 W. K9 f; ?3 _: q' T8 _0 Mhttps://github.com/guillaumekln/faster-whisper
. R5 m4 K$ `- ]2 q' l安装如下:9 k& p& r5 F4 N3 z2 u
1, Windows 103 P$ g6 B4 ]+ k4 c
2, Python 3.10.11% m1 |' T5 ]8 w
3, CUDA 12.19 ?/ u  w2 K9 f5 K0 t! j! J" r. P
4, 在python 3 中安装# z8 \8 E& x- S7 `! |0 ?
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1174 U5 ^4 H: D( O5 `3 E' j$ a( o' y8 T
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
9 k: @5 j1 S: P5,pip install -U openai-whisper
2 R" b+ k( w1 M' a9 ~这是向whisper 致敬,可以不装) \& x8 ]  A1 {7 K# \3 f
6,pip install faster-whisper; z3 {; N$ L, x, A" x( I  @
----------------------------------------  {- Q1 R# h+ B, L$ D
whisper 我用的命令行,faster-whisper 我用的是python。
8 K8 Q  H) N+ r6 `8 q' j, l8 {下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
" t' ~: h" n- D: N; C; |% @% [2 b2 v. i! ^% s
----------------------------------------
% x3 [2 M/ W# Y! ?: R' M
9 P* j7 ?/ H3 d8 O$ H, jfrom faster_whisper import WhisperModel
$ w8 A/ e7 Q) ]7 y' B0 i8 L- Q. l
4 s1 Z, D: G& Fmodel_size = "small"" X/ E  e/ V: s! c& T5 a  _1 {

8 s1 F# m* }! j$ ~: C) m2 Tmodel = WhisperModel(model_size, device="cuda", compute_type="int8")# A" c3 `; w# c$ M& u
, K4 d/ c: }- B) y  u
segments, info = model.transcribe(
0 E- b" G" U* i& N5 H, P    sourceFileName, ) A: a9 ^$ i7 Z3 s2 q5 b2 D) b1 E
    beam_size=5, , y/ ~- X- r( _9 f2 Z
    language="en", ( W& [0 i  S6 |$ c2 g- K" T
    task="transcribe",
: K: d* ~$ Q& V& d1 f. u2 W    word_timestamps=True,
2 D6 i' w/ k( t, a# z8 V! n    initial_prompt = "Hello, welcome to my lecture.")1 `& x" O' x( C4 p

8 s9 O2 ~2 L  Pfor segment in segments:4 K5 W) l4 V8 P7 E8 b/ r
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
8 k" q2 i  |+ U3 F- k0 b; {* B* D/ h* G: s0 x# u$ @# }/ U
        for word in segment.words:
% X) ?0 D2 N7 D! w* `                ) a( y  Y4 b; h( l9 l' j
----------------------------------------
! e) K4 G. ?; I7 `, O+ `
: R3 v7 S+ F% Y2 m代码说明:3 M4 T9 A+ [  r. x& c
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。" n/ |2 k1 e/ m3 o; T
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
/ W2 e- z8 V9 T/ x; ]# @% T2 Y( B2,segment 本身是很粗糙的,做字幕勉强能用。
5 n' M; Q- a3 c" V7 f3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。, _0 }( f' `% N, ^! d' e
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中" |2 v- }  A# \. {. t: t
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。5 g  v; n# [0 `/ i4 |
5,model.transcribe 中参数说明:5 {7 f3 D8 f8 K1 n! ^4 V
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
  b- o' ^9 ]$ a) i7 {3 q其中
; t- l! Z9 i3 R9 W+ J6 u3 C4 o    word_timestamps=True,
* U! E9 }" o# f2 M( o4 b4 A; c6 A9 ~保证了你能拿到 word,否则是拿不到的
8 I% D% Y. D' |$ A    initial_prompt = "Hello, welcome to my lecture."). ]( ^, C; w/ g  M  o: @
保证能尽可能准确的断句 punctuation,但是不是决定性的。
6 r1 D% {# E' w其他参数可参考源文件:( p0 Z2 i8 ~9 b
https://github.com/guillaumekln/ ... isper/transcribe.py/ o; ^2 O" A- h7 _  p
152 def transcribe(4 }) R5 c+ b6 e- j* ~* `
从源文件你可以看到是支持中文的句号断句的。
4 ^1 k+ ^8 L! M5 g; D
  n- l$ @" f* {0 X5 I# X6 x6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
: \) w0 v. I2 e) J7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。% j& x" E7 Q/ j( I: L
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。$ s! i2 \5 C8 Z9 f& |0 J' R. _

5 Q- o; a1 Z! {; T2 V2 K
* M/ `: x) A0 [$ v" w# I
: N$ o6 c9 c; X7 n

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2024-9-28 01:10 , Processed in 0.031524 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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