爱吱声
标题:
faster-whisper 更快的语音到文字的识别 ASR
[打印本页]
作者:
nanimarcus
时间:
2023-6-4 02:10
标题:
faster-whisper 更快的语音到文字的识别 ASR
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
# b! J4 P/ i$ k; z( I$ M$ h
. y$ @( l+ F0 k, X* E
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
5 u' {; Q# t) m. n! ~0 B0 c
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
% l" d+ u g+ [2 l7 Y
----------------------------------------
4 P. ]" |, t# i# ]/ E1 K
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
& v M7 L" L u7 H% l
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
4 H2 x$ p* v d" o0 N
----------------------------------------
1 @3 L+ D# B3 k3 z+ }0 _1 M! e8 M
https://github.com/guillaumekln/faster-whisper
& R0 j! h3 b- D, m0 d
安装如下:
4 G7 C) o+ y7 l0 N" o* [ i' X
1, Windows 10
3 o# p9 V) ]% }. j
2, Python 3.10.11
7 x$ U& N" v" E. w) l' ~
3, CUDA 12.1
* ]% b; _; n+ o1 l2 I, h6 N+ Z0 E1 ? ^
4, 在python 3 中安装
9 y' q* C5 s8 {2 ?' d5 _: S
pip install setuptools-rust torch torchvision torchaudio --extra-index-url
https://download.pytorch.org/whl/cu117
: ^* Q/ ^9 ]" z2 B
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
/ d' F8 P& K* G$ L5 n" @
5,pip install -U openai-whisper
) J; {& [9 G( @9 N5 q; {- v2 x
这是向whisper 致敬,可以不装
+ K* d; N4 b4 _7 S5 }& W( U
6,pip install faster-whisper
: s, l: c. o% N/ |* A1 y4 U/ A1 @
----------------------------------------
: R$ P: f5 l7 p( `) a
whisper 我用的命令行,faster-whisper 我用的是python。
. w# Q7 H- P- P2 ~: d
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
9 D( ^) @) D1 O' V( Q, _6 k- q
, b4 v" y4 ^1 T' J4 Q: t6 G7 |
----------------------------------------
/ v C- K" d- p, L }4 _' C; n
+ `& c% ?0 q$ w: x3 c2 I& ?' Y5 N
from faster_whisper import WhisperModel
, v4 i( j" J$ _/ ~. R
* Y2 j, W1 G5 C/ ~8 D8 Y% N i; V
model_size = "small"
& _9 Q; Z( B, s/ u. p6 I* t
) O; l0 ]- K+ |5 C; m4 V" n/ J' ?1 y
model = WhisperModel(model_size, device="cuda", compute_type="int8")
1 X7 f; M* z' h& p) f3 S0 ]
( ?4 u5 v7 w9 r/ A, L
segments, info = model.transcribe(
& E1 G/ J, n% p# _/ G1 t4 `
sourceFileName,
" p3 A/ v5 v; b6 C
beam_size=5,
% v/ P `. c; s) z" M; e N; |1 x
language="en",
' t. \# u+ ~9 S( @& `+ d
task="transcribe",
" J1 q. f( o% g- s& c c1 B M
word_timestamps=True,
$ k% G: I# H/ i9 Y2 U, Y
initial_prompt = "Hello, welcome to my lecture.")
2 o6 A0 k7 t3 G" C# c a" u3 H
0 C z! X" G- [6 e2 E* X* Z9 T
for segment in segments:
5 k( \4 x3 V; |/ V% q5 b& j2 s
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
3 s/ P- X' t3 I' X. n% D
$ M9 T. ?. `3 R
for word in segment.words:
# M2 ?8 J; f# R) \! U
( {( V# ?& L- B! T5 u5 k
----------------------------------------
, b! j# g0 Q2 V+ z+ w9 u* d7 D
/ \! Q+ C+ ]% B; Y; b/ P
代码说明:
+ p6 C1 P2 x5 T2 ^! K
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
, ~3 i! F' g: j
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
9 n% v, g6 @; y( R6 `1 j: _
2,segment 本身是很粗糙的,做字幕勉强能用。
' k- I" N& Z/ V* P& E( c; k
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
+ n) N3 Q# q9 _9 C* k& u) k- D3 O
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
4 I0 K1 b- h0 t
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
6 ?2 ]1 X5 g( l W2 c/ E
5,model.transcribe 中参数说明:
}8 |4 K3 A5 @7 B& O7 J0 T) o
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
* W% t0 \! P0 c+ ~8 _
其中
9 n L7 _5 o& }+ ~2 y. z
word_timestamps=True,
1 X( M" `, c- r- |- D/ }
保证了你能拿到 word,否则是拿不到的
+ i3 N1 U" u+ u9 F" w
initial_prompt = "Hello, welcome to my lecture.")
* M' w$ I2 p4 r) ^1 \5 v: X: [
保证能尽可能准确的断句 punctuation,但是不是决定性的。
/ f8 Y" n: E4 `( {: A. ]( ~
其他参数可参考源文件:
. x/ z4 V0 F" y4 h; b2 I6 u
https://github.com/guillaumekln/ ... isper/transcribe.py
0 n K! r0 y7 D
152 def transcribe(
) {. d/ |: C' ~) x
从源文件你可以看到是支持中文的句号断句的。
% {7 Q& m$ c1 \4 N& F5 I. X1 i
' }6 [7 n. B4 ^
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
5 C0 D' `' A8 U
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
% @( H% V% S+ P) a8 `* s
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
) K0 T9 [$ w+ `" X. x3 N
' e* x+ R% S% d7 Y G( I
2 O. o5 y! @/ A3 f7 `" y$ s
; E8 f' [; h3 j. X+ o7 Q
作者:
nanimarcus
时间:
2023-6-4 11:53
多谢各位榜爷打赏。
欢迎光临 爱吱声 (http://129.226.69.186/bbs/)
Powered by Discuz! X3.2