设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ! L# a; K6 Z/ L; ~4 B; m6 M  \

5 S3 ]. ]9 g7 ?2 `2 v6 G# z) Z) P借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。8 y" U7 P- }/ D, m1 T; t1 W0 F
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。7 [4 r: w" o% l! K- D
----------------------------------------- d4 B% o( T$ T5 i2 n
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。/ ?  `0 g8 L7 a/ H5 ]
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。3 Z; p2 j8 E6 W1 t/ Y5 c6 S
----------------------------------------
3 t! o* ]& b- s# a4 p$ u3 B. z( Mhttps://github.com/guillaumekln/faster-whisper
* P$ i2 K. ]1 z: w, @安装如下:
9 ?2 A4 o% M* l, D2 }2 m6 J' u1, Windows 105 b& m5 D/ B7 L7 _
2, Python 3.10.111 L3 [$ K) G9 c+ A2 S6 g- K; w
3, CUDA 12.1
) n5 u  x' b9 q% R$ U+ K7 p4, 在python 3 中安装
7 N# W; e* r& apip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
) F( t+ s: B( y  J% {% @这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
( h# @+ Y( v( c5,pip install -U openai-whisper
1 \3 H) i% {; o5 S这是向whisper 致敬,可以不装
* j  `5 i0 O( k7 H# A6,pip install faster-whisper
9 j) ^* w2 Q- a----------------------------------------/ a( h: \; F1 D; {% G" C$ k/ F
whisper 我用的命令行,faster-whisper 我用的是python。; K) O6 I* V; l" p, Q  c1 S
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
7 s# @9 e/ H. c" y- A2 z6 N  g" m
) q7 I% B0 ]. j  Q1 s8 G; d----------------------------------------0 a2 g/ h  z4 V- _  M

; X/ l+ Z9 e4 k0 f" [from faster_whisper import WhisperModel
6 X2 ^! }, i$ L) O0 U8 Y% w+ ~! F
2 m" ]+ c  X5 u4 umodel_size = "small"9 V' c. i7 W4 c, G) p' H

2 V* T% h' X1 v! w+ Pmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
" k1 n* ~/ x# q2 I8 G! k9 v3 s8 M8 ~/ Y! V
segments, info = model.transcribe(6 B6 W; R- K" \# t7 ]
    sourceFileName,
9 z/ R: b' n% l( Q5 N+ D* H    beam_size=5,
" m: X' h: s5 O! U    language="en",
% ?% S+ r8 G3 |) d# q- h7 y    task="transcribe",
' M: \0 z3 o( m" U    word_timestamps=True,
$ ], D- Y  ]& Y; @* d; B3 M$ K  k    initial_prompt = "Hello, welcome to my lecture.")( k; M) D2 d  I- Z" b2 L$ `

* ?% ]- C& ^$ J7 U% E, a/ [for segment in segments:: m; ~% Z: h; V0 d% Z4 Y4 }, Z
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))6 w9 C0 s& \1 q
9 A( C/ P& Z2 f! s; n
        for word in segment.words:& @! |8 |; O$ A6 u
                7 G4 `7 Q9 a% Y# }; a4 j
----------------------------------------" s1 `$ f- V* K; [

! R+ x+ ?' J$ ?# u& E% w代码说明:$ \$ ^. G3 |4 k- e& Q
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。- ?, d. b$ I- n
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
' z  U8 L; r; |% T% l2,segment 本身是很粗糙的,做字幕勉强能用。# l; A! [$ a5 @7 f
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。0 ?+ _/ ]4 {8 a. }1 a- @6 ?  }
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
% @- B3 T, w7 ^. I& k比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。, D: B0 L& A# n  R* p& E! L: n
5,model.transcribe 中参数说明:
" Y0 F2 {- e$ C4 s# m% o5 D你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
3 b5 J, c7 {1 w5 b其中
5 F5 m6 l2 E7 w4 Y  q4 \    word_timestamps=True, 7 _  ?" r8 l2 s6 {
保证了你能拿到 word,否则是拿不到的
# g! |! S! X6 U& B. k    initial_prompt = "Hello, welcome to my lecture.")5 J& `5 q- Y" y) S3 ~. @  z
保证能尽可能准确的断句 punctuation,但是不是决定性的。
8 K( h$ K8 x4 u6 F& p其他参数可参考源文件:5 Z7 K1 W' K. k  l# [
https://github.com/guillaumekln/ ... isper/transcribe.py
4 S- n; o5 n5 B# O1 y5 t152 def transcribe(+ J$ A! m1 x, s  `, W  f8 l
从源文件你可以看到是支持中文的句号断句的。
7 E8 ]6 C2 t6 n) {$ h4 W/ ?; d
1 j: Q7 ~8 l* k0 O2 a1 i* z6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。9 j" F9 L* I+ o+ h6 d7 s
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。  F3 K. C3 ?  _- K" J3 ]  k$ _
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。: W2 a, o# \+ f8 t" R5 q" N

" P1 q3 V6 w. R$ C; {: K; _: @& X " [6 C* W# \" E6 s3 M
' _) y2 ]/ t0 S6 t5 q+ l

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-11-27 15:40 , Processed in 0.031680 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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