爱吱声
标题:
faster-whisper 更快的语音到文字的识别 ASR
[打印本页]
作者:
nanimarcus
时间:
2023-6-4 02:10
标题:
faster-whisper 更快的语音到文字的识别 ASR
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
2 l3 h0 J/ q3 y3 m
2 [/ L$ s; w# c P* b# F0 E, [, h
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
; p: y) Z( Y- Z8 ?. N3 H! x
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
j; |6 z& R7 D1 w( U' G6 s, G
----------------------------------------
' J* f1 d! y8 I& E0 p
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
7 _: D/ K* D/ J* `" l( w( {
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
) f- ]# _, S$ P. s( J" Z5 z
----------------------------------------
' f* B4 k/ M9 ?5 r
https://github.com/guillaumekln/faster-whisper
, H1 { b7 _1 ~1 E7 s' g9 J) |
安装如下:
/ v9 x3 i7 N4 h' k+ W1 Q2 u
1, Windows 10
( l" a. Z) s: k R0 z% |
2, Python 3.10.11
- K! G8 {5 [5 e4 a8 s+ Y
3, CUDA 12.1
( E; k6 J" f4 x/ c+ i% W7 o+ X1 w
4, 在python 3 中安装
! V+ _6 A4 o0 Z: M8 T
pip install setuptools-rust torch torchvision torchaudio --extra-index-url
https://download.pytorch.org/whl/cu117
/ V. o, g8 {3 Q
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
1 h2 Y1 |, h8 B" E/ f/ N9 a
5,pip install -U openai-whisper
% g# R% @. \& I q, s- |, `
这是向whisper 致敬,可以不装
9 H% G6 o7 a& U7 s( ~
6,pip install faster-whisper
. T( } ~% O+ N6 i r8 A
----------------------------------------
/ N/ B$ V; q- F
whisper 我用的命令行,faster-whisper 我用的是python。
- r1 x9 ` t. R) C8 {0 h& C6 z
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
% G0 j6 j' B$ \0 c
" r2 n1 h3 F* l& B: a
----------------------------------------
+ G4 d1 d; {1 v! ]4 s
6 X$ j. a! m& u/ o$ [& h
from faster_whisper import WhisperModel
9 B% d3 w& j- x6 }% W
/ T7 b& O: E9 [! i. v9 K
model_size = "small"
S3 \4 `5 N n( O
; k. p, j' Z) P T* m
model = WhisperModel(model_size, device="cuda", compute_type="int8")
/ }; t9 m3 ^. n$ R; ]# I7 Z7 L2 E/ p; M
6 B4 Z( P9 x1 W" n7 j4 b
segments, info = model.transcribe(
9 W) z6 J; g3 |& s. G+ `7 Z- S
sourceFileName,
3 Z( |1 J; @$ d: W
beam_size=5,
) h/ o& @( |( j
language="en",
* Y/ X- y/ T8 o, f* G9 V
task="transcribe",
) e$ Z% i2 V( J& T0 ~+ Q+ P7 Q% V H& H
word_timestamps=True,
7 m: ?& u' e* G+ P$ @" L' @- k- B; j
initial_prompt = "Hello, welcome to my lecture.")
( {: m! p3 r; N- g
/ ^, J) [: T6 w8 z X
for segment in segments:
6 H# {; n" p# B8 b
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
( ^8 t+ z5 E( x
: b- D. u! I6 P9 s) P0 |) R
for word in segment.words:
$ B2 v2 T8 ?) G" p8 d& V/ N4 X
6 T4 g) r* F9 v+ T+ c, u: q7 Y' [
----------------------------------------
/ O, e) S/ C. R5 x: k1 n; o
2 }: L7 `# q, f2 }' o
代码说明:
4 M s# ?/ F2 C! r: P+ o& F
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
4 O4 `; b/ F3 W6 ]5 U8 a. S
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
# l& U" o: d4 n5 Y" u0 S, o6 q
2,segment 本身是很粗糙的,做字幕勉强能用。
2 `0 k0 i+ s! W/ b6 k$ \ V
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
. V- E; Q7 _/ X. M' W
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
. f a1 p' K) v" ^ l: Q) J
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
* I, I6 M8 L" m# Q
5,model.transcribe 中参数说明:
5 p! {& X, ^8 @# \
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
7 T9 O2 e8 h/ [) n, Z, O
其中
1 \. x% Q* @1 L' ]$ S: a
word_timestamps=True,
+ t6 }' N1 i) _. z
保证了你能拿到 word,否则是拿不到的
% }7 A( R' y# @" f) B! c
initial_prompt = "Hello, welcome to my lecture.")
4 K" A! C$ [) i$ L& R+ W. f3 h1 G
保证能尽可能准确的断句 punctuation,但是不是决定性的。
5 Q" L( M8 m+ w- e7 I, r* M8 J
其他参数可参考源文件:
7 t' W% ^) ]0 a8 l( j, R. P
https://github.com/guillaumekln/ ... isper/transcribe.py
! Z5 ~# ^& C0 D, v! |
152 def transcribe(
6 _7 x2 S: A8 h( k8 H. g. ?
从源文件你可以看到是支持中文的句号断句的。
% v" k2 S8 b2 V ~: U
6 j. X- f- ?- E. ?0 f/ F" {% ?
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
1 ~9 s' w8 [9 z
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
2 a) f/ C8 v5 ]) e7 D, _
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
% R$ J1 h/ b9 z( ?+ u
E8 N* {6 G0 Q0 S- }. W, M
/ [/ I M, I! f! |# m" R
' Q& ?" C' b: b
作者:
nanimarcus
时间:
2023-6-4 11:53
多谢各位榜爷打赏。
欢迎光临 爱吱声 (http://129.226.69.186/bbs/)
Powered by Discuz! X3.2