爱吱声
标题:
faster-whisper 更快的语音到文字的识别 ASR
[打印本页]
作者:
nanimarcus
时间:
2023-6-4 02:10
标题:
faster-whisper 更快的语音到文字的识别 ASR
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
$ h* d7 I5 d, _ g4 g) u* ~
, o, x/ H# j, b$ I v/ o0 u
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
% w: T' {/ Z- g7 w8 w
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
6 |7 o0 j9 y( E1 K/ Q" D
----------------------------------------
# a8 }# _- @! Z8 l4 k; d6 r! t
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
" q7 a3 o. [: C( f- R" C% b
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
3 y6 Q2 R N( @) R8 W
----------------------------------------
+ C: u, q4 h% E! q' u- I
https://github.com/guillaumekln/faster-whisper
0 m1 L: q: Z+ h7 `$ ~9 k
安装如下:
6 r" K {4 ^: R0 P! h: R* s% M
1, Windows 10
/ Z- N8 w* g+ G0 [$ Q* f
2, Python 3.10.11
* Z0 q3 d, L: X+ F2 @" i
3, CUDA 12.1
" f( S9 D1 g9 S
4, 在python 3 中安装
7 ^, f2 d+ @2 S7 ]
pip install setuptools-rust torch torchvision torchaudio --extra-index-url
https://download.pytorch.org/whl/cu117
" d8 @; T3 w# _7 P Y L& e- _
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
. k& f a5 H' |# Z7 G+ M3 L7 K
5,pip install -U openai-whisper
6 K( l# ?2 m$ H1 R' N1 v
这是向whisper 致敬,可以不装
0 J t7 u( k( W6 }, @3 V( ?
6,pip install faster-whisper
) ?6 R& |3 j& m v) N
----------------------------------------
; |, w7 Z' o; f4 E
whisper 我用的命令行,faster-whisper 我用的是python。
. e Q2 M" J" e0 `) E
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
" v* Q4 [% \( a0 D- z
# j8 b) Q3 q$ b9 o0 Y: A7 l
----------------------------------------
* I2 w5 F* B5 k' N, G' u5 U
5 o$ E$ p7 @' F4 I, P
from faster_whisper import WhisperModel
2 ^; ~4 N. s) r% m* S% A# A5 b8 M! U
: m @1 N1 p- K! a# R8 Z% S
model_size = "small"
$ R9 }4 ]; ? ^5 t$ C; L5 y/ [. C
L7 ?" C0 {8 N0 s' q
model = WhisperModel(model_size, device="cuda", compute_type="int8")
0 Q7 ~, c3 L" V- @1 y6 Y, A
4 }8 @: R' y0 h1 M' d- }5 n
segments, info = model.transcribe(
7 U# Q7 L7 p) i" C
sourceFileName,
6 w! s, |' `! M; \2 Y# W
beam_size=5,
/ s( G, I! j v2 d" u: q
language="en",
9 p" H2 ~' }, O# M7 Q, X w7 c4 ~
task="transcribe",
! M( D6 d: n4 f) ~# p: x
word_timestamps=True,
' O) C4 E; p% {) T7 N2 d+ ]8 q, D6 K
initial_prompt = "Hello, welcome to my lecture.")
6 v, Y- n; r' C5 h/ Q; |
# ^# @) s1 i& |* q' {- Z
for segment in segments:
$ f. S/ H$ y3 P6 u2 ?0 }# M0 Y
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
! v+ P; @% W3 X5 B4 x
4 p( x# m# U1 F* a/ F2 J
for word in segment.words:
, b! B: E8 @% R: c! @+ w3 I+ s
' k8 [7 y( K1 j" B
----------------------------------------
$ b: E4 U0 |- w# F" |
. `% b3 p/ B6 Y* M8 ?/ y( f v; X( i
代码说明:
, I- _4 p& ^' a7 m+ U
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
: \/ B/ h# D3 @; t3 F! K8 _ x
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
4 G v. B6 n4 s: W/ q2 p
2,segment 本身是很粗糙的,做字幕勉强能用。
0 c' @( U1 F6 ^6 _$ r
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
+ t7 l! b1 \" U& a6 w2 B$ w
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
( G7 K, }1 x) b7 _% _
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
2 {2 G9 l8 Z9 E" g
5,model.transcribe 中参数说明:
* v$ x+ u/ l9 }/ X% U
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
! v, o+ j7 h! f; H
其中
! A0 ~8 P$ n: S
word_timestamps=True,
" C0 P/ K; m$ e- {+ O: k2 B
保证了你能拿到 word,否则是拿不到的
`# |5 d0 O1 j
initial_prompt = "Hello, welcome to my lecture.")
( ?" ?' r% s. e! q
保证能尽可能准确的断句 punctuation,但是不是决定性的。
$ |2 a/ t. ]! X, X1 w
其他参数可参考源文件:
6 W5 K5 Z+ U/ b& W, L6 M% j5 j
https://github.com/guillaumekln/ ... isper/transcribe.py
: v- f, }5 Y1 w$ }3 m
152 def transcribe(
& h9 Z* i4 L, C% a# n3 @5 a% l
从源文件你可以看到是支持中文的句号断句的。
; G, E- o1 [/ g3 D: i( }' A
. \2 S1 K; u4 ~3 U
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
; y. i2 R0 b, d3 c& b0 P- R
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
( K+ o8 e! r* f! m$ d
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
& T. @6 c3 x7 _9 Z0 n! m' [8 ?" J
# L2 Q8 x- T& ?0 z) Y4 r3 j3 U
& L: F( a7 n* S1 s! K# I" I
# |9 u" J4 F4 g4 R
作者:
nanimarcus
时间:
2023-6-4 11:53
多谢各位榜爷打赏。
欢迎光临 爱吱声 (http://129.226.69.186/bbs/)
Powered by Discuz! X3.2