爱吱声
标题:
faster-whisper 更快的语音到文字的识别 ASR
[打印本页]
作者:
nanimarcus
时间:
2023-6-4 02:10
标题:
faster-whisper 更快的语音到文字的识别 ASR
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
4 ~1 {+ d# q* {
. ~7 ^; p3 s& ^+ P: K
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
& d T) J' |4 [4 I7 P
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
4 y. l3 {# @1 y9 U6 n8 Z' s
----------------------------------------
& E9 F0 @& k5 R+ O U" @
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
$ O7 y) T6 F: m6 D* g5 `
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
* {2 w# n! K4 n( V! G5 c! F
----------------------------------------
. @# v Z }3 q5 T% Z3 B
https://github.com/guillaumekln/faster-whisper
+ p" S$ q9 | m! l k( M8 H/ W
安装如下:
" ~& O1 S1 g- T$ m& |
1, Windows 10
) w2 t ]3 d1 y0 B* h; T2 U8 v
2, Python 3.10.11
# M5 l. `# v2 L& P2 a7 V3 S, f
3, CUDA 12.1
% b5 J6 c( I3 p: F" z
4, 在python 3 中安装
+ g H1 C8 x: T6 i
pip install setuptools-rust torch torchvision torchaudio --extra-index-url
https://download.pytorch.org/whl/cu117
0 w3 c' G+ _3 `# k
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
+ t6 I5 V2 V$ X2 K0 B- y
5,pip install -U openai-whisper
- W" d7 u M2 S
这是向whisper 致敬,可以不装
* R/ n7 ]; M$ V, n% Y
6,pip install faster-whisper
$ E. d' E# `" L$ M. B, K K7 c$ C \. o
----------------------------------------
- Y3 i, V5 C1 x% q0 ?) q! I' q
whisper 我用的命令行,faster-whisper 我用的是python。
0 k# f( q8 e/ w7 e# d% I
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
" k1 B% b5 O# x: l6 N* |, j
6 M4 Z7 c2 N" k- G9 @' z: q% R
----------------------------------------
$ ~/ J* L+ }* `5 p6 X. `5 o
: ?$ w( V; D- @1 M& H
from faster_whisper import WhisperModel
9 x, }. `3 _: _% F8 `
/ x" h! E9 U0 K* e+ g
model_size = "small"
8 J3 g% W3 ~) ?
/ h% \) `; X. l% z$ O3 q. L
model = WhisperModel(model_size, device="cuda", compute_type="int8")
, ]" t, D4 C. R- l9 W: Q
+ r1 P. e- f7 M$ k Q) B ~
segments, info = model.transcribe(
% Q. s# Z$ c0 K1 |4 ^
sourceFileName,
* l+ Y) i# t$ g3 H! q- O
beam_size=5,
4 b" E- ^9 A7 F, _1 K
language="en",
) p5 I, ]9 \9 i0 c! h k5 _
task="transcribe",
' ~; s/ s9 B" S; D' W$ @# ~
word_timestamps=True,
; k* d0 _/ G& V1 n- n
initial_prompt = "Hello, welcome to my lecture.")
* f& L% `: Y# k5 m% q+ p
! ~7 g7 `2 v, @8 J5 O/ j; s0 `$ ]
for segment in segments:
5 }; T' R9 ?8 I
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
- c# Z" I- e0 P
7 | x( q& p" O: X6 D" d
for word in segment.words:
! }! S% T; L5 A, K) ]9 f1 r7 Y
, k$ ?2 a% X, W/ I1 g ^2 E
----------------------------------------
r* d3 n8 O+ y& o% V y7 x: C% V7 f
# N6 S$ ^ d8 f3 z8 e$ T* K
代码说明:
6 I) a' _, q, {8 i8 E% `, @0 q
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
( M1 i4 }$ d% @6 x
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
* H( O, K* Z- l/ J7 d$ r: _
2,segment 本身是很粗糙的,做字幕勉强能用。
. k, ?3 m+ Z# P0 ~! A+ e( }
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
! P8 k5 A7 b9 a9 @
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
! [/ m+ d2 S' k) Q- c$ ]
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
0 n* A+ U$ J" j2 V
5,model.transcribe 中参数说明:
/ }% a" E& j/ x1 h( G t
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
* N* K/ W# N. d& a8 W8 q9 w
其中
5 @- |8 x$ N' J+ Z2 R# |
word_timestamps=True,
- Y9 B& ?& n: z
保证了你能拿到 word,否则是拿不到的
+ U5 }6 }' x# S& j$ k
initial_prompt = "Hello, welcome to my lecture.")
- H" Y# ^9 U! ~
保证能尽可能准确的断句 punctuation,但是不是决定性的。
$ ]7 F: L- x6 d" b% l' C3 k
其他参数可参考源文件:
$ _' A* o0 b* H$ \
https://github.com/guillaumekln/ ... isper/transcribe.py
/ H' u! }2 n6 s) P* O
152 def transcribe(
$ f" O/ [8 {/ D, t' w. @; U
从源文件你可以看到是支持中文的句号断句的。
/ m3 |- R0 ~* H- r" E" ?; w
! s* @& K$ {8 f3 o e1 K7 Z% x( B
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
+ T2 j! v) t1 f5 o# i! m4 g
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
/ I7 U( E6 L& Q% @/ R. } w2 T
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
* b, W: ?8 d/ x3 x; [' h
9 s" l7 W& S1 ~" U# l5 u# R) ~
% S: @1 W U- S T' Z
/ x: E* Z$ H; U- ^8 G& H3 s* s
作者:
nanimarcus
时间:
2023-6-4 11:53
多谢各位榜爷打赏。
欢迎光临 爱吱声 (http://129.226.69.186/bbs/)
Powered by Discuz! X3.2