爱吱声
标题:
faster-whisper 更快的语音到文字的识别 ASR
[打印本页]
作者:
nanimarcus
时间:
2023-6-4 02:10
标题:
faster-whisper 更快的语音到文字的识别 ASR
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
1 ] R0 L2 v% J5 D5 B: u/ X+ ^8 U
2 L/ a! I* A4 p% _
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
/ q2 x& n4 W: Z" l
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
6 L+ d; h3 g. Y" i# M
----------------------------------------
~' a9 L \) c6 e2 R# C
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
, j+ w. I# ^# [
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
% n m2 Y; u; E5 D/ k
----------------------------------------
- M5 h7 M$ ?, ~) ]& p: O' ]- J L
https://github.com/guillaumekln/faster-whisper
5 \& S& \8 R6 i+ J( [' ~, ?. W8 B
安装如下:
, A, g: c2 c3 A7 \5 O( L$ |% O
1, Windows 10
. G$ r- i) S' R
2, Python 3.10.11
" q2 V4 ~; A) ~: m( P( @+ T- B# R
3, CUDA 12.1
5 v& f, ~" ^7 {' X1 h
4, 在python 3 中安装
* O% n8 O* p+ v& d
pip install setuptools-rust torch torchvision torchaudio --extra-index-url
https://download.pytorch.org/whl/cu117
9 {* n/ D5 p' Q$ J# u
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
& R3 C! O% \! g! ~' Q
5,pip install -U openai-whisper
* z6 {; D+ F+ w; ?: y5 J S5 C3 A
这是向whisper 致敬,可以不装
/ z+ {1 e, `$ x: x! i
6,pip install faster-whisper
% @% ^ m! u B2 J/ P) d: b
----------------------------------------
9 |7 G1 ^8 Z' Z5 N+ {3 r. Z
whisper 我用的命令行,faster-whisper 我用的是python。
5 |) i8 L( V% ~3 k& h6 Q) h& b* L
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
7 g* C0 f" P# d- [
) i% F& c3 m4 ~% H7 g2 K
----------------------------------------
1 p' `" _0 {& J: B; V1 G7 d
5 w# V! n p! M: Y g; _' M
from faster_whisper import WhisperModel
* `9 v" m6 k" V9 P
1 {) U% D- M8 s$ ~8 I
model_size = "small"
: {" l$ s" M: w# h* M6 f9 b
0 L: t4 v' N9 W; f* o
model = WhisperModel(model_size, device="cuda", compute_type="int8")
% e0 [7 j. } |6 T% N: g
+ @' J3 k7 |/ D! d) B* p
segments, info = model.transcribe(
" F* i% P' [ s7 R# S+ K
sourceFileName,
" C/ R$ U' K2 Q8 U" q% r2 \
beam_size=5,
) a; e& t) f/ V( e2 c- L8 l1 {% }
language="en",
% e" \" F2 g' b2 a# [" l- t
task="transcribe",
9 {( t/ |$ Y7 |. U9 x* q
word_timestamps=True,
, c& ]4 w$ C2 ?
initial_prompt = "Hello, welcome to my lecture.")
/ p7 E- h: [1 x5 q& p
7 _' Z/ B, M! y, a7 P$ v
for segment in segments:
+ u+ e; D- C1 F ]
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
. @: o4 O3 C' A3 M, i: Y/ A% o
+ m8 N. F/ ]+ g& K ^
for word in segment.words:
z# _3 \, u- G
: Q( t$ W# u5 c% _% X( |7 U4 L
----------------------------------------
: O2 |' C# _+ z+ A* r8 w# F( F2 e
! C- ]: [4 Z8 \- J: F
代码说明:
% ? o4 M2 R! S+ @
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
+ z" I! d O$ @& M4 v$ k
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
( N8 I3 O5 F \# C6 l% |; {) {. D
2,segment 本身是很粗糙的,做字幕勉强能用。
7 `) h, W; X$ k$ \
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
- C# |" n& ~ A' V ~% m6 d
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
( c; u! H- D$ F! n8 E2 m( W9 q
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
0 z3 [+ _1 J- Q# b& T
5,model.transcribe 中参数说明:
- S" z& [7 } r, m
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
. X( P3 ` p+ l2 g; ?( Z
其中
$ w! L5 O! H* n) [2 }
word_timestamps=True,
+ e! s: A2 _/ X6 u0 b4 m
保证了你能拿到 word,否则是拿不到的
$ v: A- b! _" k8 ]/ g5 p+ w
initial_prompt = "Hello, welcome to my lecture.")
1 y' S6 t1 T# q4 ?/ w1 n5 s
保证能尽可能准确的断句 punctuation,但是不是决定性的。
: @1 |8 W! {& B" J
其他参数可参考源文件:
, n; F5 ^' w6 z+ ]1 W
https://github.com/guillaumekln/ ... isper/transcribe.py
7 g- T4 P! J0 o2 J$ a( ]* i+ l+ j
152 def transcribe(
$ x4 D9 x. `7 \
从源文件你可以看到是支持中文的句号断句的。
! [$ X6 H, w! E" ^0 _
1 Q/ ~8 r' J9 | {/ J- o7 t4 P+ ^0 P) f& D
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
1 _+ {9 j! O( G1 q" c
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
$ w, U4 Z# B% w' y( R+ k- K
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
) b4 f0 M2 l3 q4 x5 r" |: }
4 Z1 ^% W$ ]& }; U6 k" e3 L' L" d
6 l7 L/ y7 d! d; g. P( F
+ e8 ], X+ K1 j+ M# |* G
作者:
nanimarcus
时间:
2023-6-4 11:53
多谢各位榜爷打赏。
欢迎光临 爱吱声 (http://129.226.69.186/bbs/)
Powered by Discuz! X3.2