爱吱声

标题: faster-whisper 更快的语音到文字的识别 ASR [打印本页]

作者: nanimarcus    时间: 2023-6-4 02:10
标题: faster-whisper 更快的语音到文字的识别 ASR
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 9 q8 J: \+ f. i: p. g/ t
  u' S* P& j$ ~- `4 x
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。. U) g7 ?: c) o5 l! Y  Q/ f
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。  U6 {1 m$ z; r. P% e
----------------------------------------) u2 y: k' q, r# ?+ N' B
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。: U" p& F1 P; L7 k: E/ q
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
& Y$ O9 `) a3 Q, ?; ~1 |. m( C. F' [----------------------------------------4 [/ J4 P* s# G) k% m8 F# }5 v3 W
https://github.com/guillaumekln/faster-whisper
6 P& E; G# S) k( _" g安装如下:- E( q; ^3 L; P" Q
1, Windows 108 s6 }  Z% C/ r2 i4 T
2, Python 3.10.11( x/ A* M" y1 t( l8 O. W- q
3, CUDA 12.1
+ c0 K$ Y8 ~- @5 d2 E4, 在python 3 中安装8 L0 S1 Q, k5 g
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
* V' s" r7 c8 [: Z" S! m) n0 k这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。( t& S8 Y' Y- L- y. V. q' W5 U# }
5,pip install -U openai-whisper
% T" n& V) T$ B6 }这是向whisper 致敬,可以不装
  {! ]7 @! s' v- k- `; A6,pip install faster-whisper  q2 ~0 {6 O- W4 Z
----------------------------------------
4 ~! w5 W0 b* b% swhisper 我用的命令行,faster-whisper 我用的是python。* v% C8 \% L8 G$ v6 p; F+ F
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:2 x. v0 P3 j  R3 \- X5 `3 `

% o' D. {# P5 |; Q----------------------------------------
7 b: W: ~' L! w7 \2 Y4 s/ r- X8 a; {- S# L. Q' |
from faster_whisper import WhisperModel
: z$ k) @& C- x: `+ w$ U. B- I# }6 q2 ~
model_size = "small"5 {! d& K8 K( Z) o- n5 a- h

) ~. A9 e6 X+ {, E2 ?! |model = WhisperModel(model_size, device="cuda", compute_type="int8")
/ `' u4 z3 d; F9 p! J, y% V+ G% o
+ t/ e- K# Z0 ?# y6 hsegments, info = model.transcribe(
" d7 W& M; V/ A7 K    sourceFileName, % c  W6 E& C' p
    beam_size=5,
* S7 m& l3 v3 e8 \    language="en", 5 w9 w+ r4 A' w& M: E& n
    task="transcribe",   K  B: R& Q  x1 ]. c5 x! V
    word_timestamps=True,
8 W" o* \- `9 c& h4 s% H    initial_prompt = "Hello, welcome to my lecture.")1 l& c7 }$ r& G

% ]: p. E3 W" Mfor segment in segments:6 `2 ^+ w: m1 Z
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
  J) x* T% m8 `  h& c1 B
7 |. E# v' P0 |5 i; _" N; a- F        for word in segment.words:6 ]7 P  E, ]# Z9 {
               
0 p7 i7 t4 s" G----------------------------------------( i* y+ o: ~( j; B# V' `8 p# H

0 g- ]7 _0 G! J( J5 t代码说明:
. N/ x+ W4 ~* J: x& d1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。$ y' z! i1 }  P" d7 y1 N7 x* x2 b% ~
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
" B0 g! G$ @0 _' @; Y$ C; H2,segment 本身是很粗糙的,做字幕勉强能用。0 Q: J" A  i" @% ~1 I- C2 o
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
6 ?, `  v. \( S5 y+ b6 Q4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
& p( ?2 c0 u: Z7 L8 w比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
: i' B- g9 e  v' T# c  r) l% A5,model.transcribe 中参数说明:
7 j: P/ p/ [1 ]; n, a你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
0 [1 o+ e# ~5 X& ]其中
1 n6 x9 E6 T  K. v  l; \    word_timestamps=True,
( L+ J! y5 ?/ d& |保证了你能拿到 word,否则是拿不到的
+ U; G/ P* g  x4 Z& A! }    initial_prompt = "Hello, welcome to my lecture.")
4 H7 `! D9 q6 J$ O7 u2 M8 K保证能尽可能准确的断句 punctuation,但是不是决定性的。
0 p/ d. a# J. R$ @: o) t% Q2 C其他参数可参考源文件:6 i8 @5 q+ e1 Y/ L- n& H, p! w; i
https://github.com/guillaumekln/ ... isper/transcribe.py! h8 A7 S, M) r: ?, u+ h
152 def transcribe(
7 y: ~/ `( ]1 g) v% o* o从源文件你可以看到是支持中文的句号断句的。
& R5 i: ?- A& B, s) P3 B$ m
# U8 V9 _8 e: f* w0 K, ]* Z) z6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。" {1 d( k# P/ h5 Y6 F! @$ y
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
+ _& L7 ]1 p+ P4 s- V5 K8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。$ _6 k" a, s4 o& r- q! e+ u
9 x& q, V2 J2 G6 m( Z" R5 Y
1 K) O$ [* D4 {. }# x  ~

6 _# _# G% b% m4 V2 K
作者: nanimarcus    时间: 2023-6-4 11:53
多谢各位榜爷打赏。




欢迎光临 爱吱声 (http://129.226.69.186/bbs/) Powered by Discuz! X3.2