设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
: m% y/ r7 r, Y
5 ]8 v) ]/ I7 D5 U借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
* _) {6 J. Y1 {效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。3 e9 y8 v6 ^+ G" Z0 u( |  |  ~
----------------------------------------8 |: F, J6 X' p# d
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
' n( l( l; |. v% v& G5 x- Y在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。, ?( F; m0 ]! L6 s7 I
----------------------------------------4 D. a( ~# t# l! I! ^7 N
https://github.com/guillaumekln/faster-whisper
" U- y% V: H; y6 B* X% K9 Y安装如下:
9 q; G3 N- o$ ?! `1, Windows 10
+ h6 F: i; F; a" D( T( i( c3 b2, Python 3.10.11" r/ C5 j. t( A7 ^6 H8 r& w6 y6 x
3, CUDA 12.1
4 |- C# y' u8 l: T4, 在python 3 中安装
. z, }7 l" Z- [+ M% g- G0 l& Qpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117* D9 w" Z6 R0 }* q6 p' y
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。. Y) F1 ~6 x4 {
5,pip install -U openai-whisper" Q& y( _! C* ^/ F% P0 Z$ Q* b$ N
这是向whisper 致敬,可以不装1 c5 p& W* `! [$ v8 A4 s& h6 \
6,pip install faster-whisper
7 H. d- ?3 c) D' I* _/ i% W----------------------------------------
) ]: O. {1 G/ \' v, b5 gwhisper 我用的命令行,faster-whisper 我用的是python。
; z, m) v6 G6 q3 b# h1 k下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
3 Z; z; d; w" J9 b8 K# i+ R. ?0 N5 V& E
----------------------------------------
8 t8 {# O9 _2 f5 \# m
( S9 [2 O( c  X3 b8 I* p* D. f4 B( pfrom faster_whisper import WhisperModel
  U+ _; P5 N. L$ g+ _9 [+ y/ J3 }3 Q$ I) x7 A8 {6 o
model_size = "small"; [& N4 b; i0 Z1 z7 ~) L! @

! a0 ~- X' P. w" I( u7 Umodel = WhisperModel(model_size, device="cuda", compute_type="int8")
$ E8 @( D. \  |: X  R0 o  [+ B6 M! l* _! W9 e% M0 Y
segments, info = model.transcribe() h' M# d9 K7 I8 L) I$ k6 z( @
    sourceFileName, 9 p# t8 L; o+ V5 h5 ?
    beam_size=5, ) `* q: }% Y5 J
    language="en",
9 k: M% |% R( n    task="transcribe", / s9 a% f0 i) {( h. s& z8 T
    word_timestamps=True,
: h! Y$ s  y- b1 I    initial_prompt = "Hello, welcome to my lecture.")0 O3 m3 {- ]6 @& j  K5 a

/ ]5 k! x- `1 `, Y$ j3 z1 y$ G# Z! w- Vfor segment in segments:
  }9 @1 ?; {* v+ n. x$ @    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
& n. E% _7 |/ Z( Q; l1 C
6 Z6 n9 y% b& V        for word in segment.words:( M& {# L- b$ `; D3 s2 G
               
* u8 l" u0 j) ?' r' L----------------------------------------
  n1 B8 [, r2 I8 N8 y& E5 X* _* O, V5 Q# x4 P: o. ^
代码说明:
. l1 h( v+ f. ^! D3 ~% J3 ^' s7 _1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
6 r+ z2 h! z$ r3 W但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。1 |6 n- J, t' X7 d* @/ \
2,segment 本身是很粗糙的,做字幕勉强能用。
( @% B8 w/ O; X5 g( H3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。# J; @1 V% k: C& i! B9 U
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
3 h3 G1 H4 q& i7 ?比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
. v" _) |: @% W( G9 K: n3 n5,model.transcribe 中参数说明:5 Y# J8 C4 [5 w
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
7 g  J" W7 y/ p其中
5 U( E$ Y9 ?# z9 `+ v) Q9 ]    word_timestamps=True, 8 _' Q0 k) d8 V
保证了你能拿到 word,否则是拿不到的& ^9 q- ]; T& R# g9 V, r! N, A
    initial_prompt = "Hello, welcome to my lecture.")
* A$ z/ _$ [, X保证能尽可能准确的断句 punctuation,但是不是决定性的。/ y1 Z2 I: z1 \# Q: Q' h& S1 V
其他参数可参考源文件:7 K* Z" r$ ^1 K0 N0 W- v  a+ D* i! R6 I
https://github.com/guillaumekln/ ... isper/transcribe.py
1 L* A+ s5 j6 }+ @152 def transcribe(. N5 Y+ U9 d  P; q3 C+ A2 p/ k/ y1 Y
从源文件你可以看到是支持中文的句号断句的。7 H) X7 _; e) [, W) @' d" k

6 s1 x4 I; I2 i6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
8 m! L6 R+ e8 ]* c7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。- X$ V+ H, n0 i( u, v
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。. Z9 }+ K' f4 A

2 x7 ?% K9 ?* |, Z 1 d  f! i1 B3 Z6 G

7 E& M! J. }4 F! v8 S) v

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-12-13 15:58 , Processed in 0.031446 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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