爱吱声
标题:
faster-whisper 更快的语音到文字的识别 ASR
[打印本页]
作者:
nanimarcus
时间:
2023-6-4 02:10
标题:
faster-whisper 更快的语音到文字的识别 ASR
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
( K0 M" |3 S1 m7 r( P5 X
2 s: h. [5 K7 I: N9 s$ V5 ]
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
h8 L" [0 p2 p a7 [2 q
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
# l; b! q$ e0 ^! y3 V( D
----------------------------------------
1 Z6 n+ V/ Z1 a* C1 ]4 `0 Y$ W$ f
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
: u8 ]4 a" |2 j4 H' j
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
/ j# Z* ]3 E6 ~/ _* @" s7 d2 Y
----------------------------------------
1 H O- n7 C% A' z& T
https://github.com/guillaumekln/faster-whisper
8 r5 U: Z* C5 G6 ?
安装如下:
, A3 z" q K, h( Y1 X! {, t* ^
1, Windows 10
5 O+ [" _' j; q2 \6 s. I
2, Python 3.10.11
( z+ ?/ i+ R9 p
3, CUDA 12.1
, z" t, X4 q( t3 k4 q
4, 在python 3 中安装
$ H+ F3 k; F8 D" b: R, v4 V+ Y H
pip install setuptools-rust torch torchvision torchaudio --extra-index-url
https://download.pytorch.org/whl/cu117
* V* b7 K2 U- t6 b0 k
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
- G! U7 [0 M7 `& N5 @) \
5,pip install -U openai-whisper
9 M9 j# }% B& d1 v5 n5 b8 p2 x& h
这是向whisper 致敬,可以不装
* D+ d" w) z3 X7 Y. W
6,pip install faster-whisper
) Q) F( h1 |7 O6 P. U
----------------------------------------
: h5 H! c7 M; T7 `
whisper 我用的命令行,faster-whisper 我用的是python。
* B$ h- g& T, u' V
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
. b# U; v9 T. W# P0 b
* R$ _; \1 \/ ]6 O+ n
----------------------------------------
% B! \3 @3 q0 g5 {7 d7 z6 ~
& D! Q' S+ w5 j( x
from faster_whisper import WhisperModel
, E0 F# A4 o6 O) g& d+ p! l+ \
. j, E5 m4 o6 |% s9 E% v0 Y
model_size = "small"
0 u2 f5 b4 e2 }4 o
0 S& s3 H" |" ~% T+ x/ z5 X
model = WhisperModel(model_size, device="cuda", compute_type="int8")
* L7 {* K4 b% A7 a! _5 `
4 t7 q4 D/ W3 R& p
segments, info = model.transcribe(
$ u0 R: m; B2 R L; M4 o
sourceFileName,
2 j* r$ r/ ~4 [0 f# u" ]* U' e% {0 u( v
beam_size=5,
3 [8 q5 z+ D; s& O+ u& X
language="en",
7 a6 }0 W4 [& {
task="transcribe",
' @ M. V4 X+ b" e6 l, _
word_timestamps=True,
- M" v" |/ Q$ U2 }
initial_prompt = "Hello, welcome to my lecture.")
( _3 C# {5 u3 C' q
8 W& V0 `: m1 k% N/ e' u
for segment in segments:
' D: s& h8 B/ e8 O+ i
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
- ~$ `7 J" m0 F' `) }0 e% V$ w
2 ~# {: x* }0 e( V
for word in segment.words:
V# V7 @, Z. D! w
k/ `" A A4 Z8 U9 O
----------------------------------------
- V" }$ ~/ k2 c% L: n" w
2 W/ y# C0 d7 W$ z1 @ E6 e4 d
代码说明:
9 l D4 e- z9 ]+ t0 h& Q
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
* E U& z; [! P1 V, ^' [
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
5 v% R" ]7 V* J1 Z
2,segment 本身是很粗糙的,做字幕勉强能用。
# U; s* m" z# H; H
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
, m0 V( k* N8 g' Z3 d& p" n& O, C+ Y. F
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
/ c% R4 H/ [) ^3 s. Z& l
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
% z2 J/ B% b. U+ o& J
5,model.transcribe 中参数说明:
- A: \0 I3 o* W* x- B8 m) V. c. ~
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
$ r# \: Q) l* S6 ^! [* A! t
其中
. y+ z J) M5 P4 Z8 T* p: X
word_timestamps=True,
7 x; S5 P8 u. ^2 \5 \
保证了你能拿到 word,否则是拿不到的
& s6 h" I7 b K `' z, ?! H4 ]6 ^
initial_prompt = "Hello, welcome to my lecture.")
7 Y8 e! V3 K5 [8 d- i
保证能尽可能准确的断句 punctuation,但是不是决定性的。
# J: J4 _* T$ Z: r }( H' @
其他参数可参考源文件:
5 T4 h; v+ u- K; S$ O! T
https://github.com/guillaumekln/ ... isper/transcribe.py
5 O+ N9 N d8 u" L# W' L6 n
152 def transcribe(
* e. D3 C' \# i' i
从源文件你可以看到是支持中文的句号断句的。
* ^0 l' M3 a& c/ O# H" e, \: t" p
1 J' I! J7 Z, W4 J6 I2 P1 R/ g
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
' E. C. r/ G1 @! I( P9 g+ k7 e' E
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
8 W" ^7 s' ~. o7 W9 c
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
. P/ b( y- l, ~8 Q8 o6 m9 f; O
8 E' y9 s: j" j- i+ M
- v3 y% A8 [" i6 Y! f
$ H( N! ^1 t; K7 f4 Y( H
作者:
nanimarcus
时间:
2023-6-4 11:53
多谢各位榜爷打赏。
欢迎光临 爱吱声 (http://129.226.69.186/bbs/)
Powered by Discuz! X3.2