爱吱声

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

作者: nanimarcus    时间: 2023-6-4 02:10
标题: faster-whisper 更快的语音到文字的识别 ASR
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 * W4 ?& }& _9 u0 {
$ W/ a4 ?8 U& [
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
1 j- Z( {0 a$ U' D4 C' T效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
% g7 J# D7 v4 Q  h( L----------------------------------------% z2 M2 h3 \# h- X( P
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
) x' ?3 C0 N8 w4 F( g+ ?在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
$ v4 U: w& v: v----------------------------------------
: ~3 P: c4 P; lhttps://github.com/guillaumekln/faster-whisper
8 W4 v# }* x- h安装如下:
, w4 ^9 i" ?9 R/ G9 X; Z1, Windows 10
% M- {/ i$ _5 n/ `5 K$ t/ M2, Python 3.10.11. y  M4 c9 W* k6 c; d
3, CUDA 12.1
: A2 n+ m6 w, Y+ M$ B% Q; i/ P4, 在python 3 中安装
6 _$ u( ?5 d. s/ [- m5 N' ?6 D) Vpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117" g) Z' S3 L+ L) J: G/ f
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。% D% _: T! @. m
5,pip install -U openai-whisper3 T$ L" b" k( @1 s7 p  u3 x& G( l, S
这是向whisper 致敬,可以不装5 y" J- J& F+ W2 W; S1 x
6,pip install faster-whisper- s. t2 ]& R6 C! i) \
----------------------------------------
8 k; ~1 d: X1 @6 ~whisper 我用的命令行,faster-whisper 我用的是python。1 E% S( x) S' B4 M/ n9 Y" h8 {6 Y
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
- R  l. s9 S' l2 D: O$ p+ k* V0 S$ s
----------------------------------------
7 t& A$ P5 _: X0 I' N( l: }4 `0 s1 n5 E" Q# [& g; c4 [
from faster_whisper import WhisperModel
. _3 z2 [* i% ~2 A, f* S/ A. |( C- ~8 X
model_size = "small"
- z' \8 g5 l. w% c' R& A3 F5 V( K5 P. l: G1 v
model = WhisperModel(model_size, device="cuda", compute_type="int8")0 h: W! P- ]: q0 s0 t

4 h0 M, P% I0 }! N# B1 r3 rsegments, info = model.transcribe(( {2 U2 d/ g2 F" ]2 C9 f! h* u
    sourceFileName,
, c6 r4 {; c: b, y/ @    beam_size=5, + `2 J; g3 P2 B' ~
    language="en",
  z' v3 X+ y) l+ r2 w! f- x    task="transcribe",
8 L4 M4 I% {, e5 H) n; s8 M    word_timestamps=True,
/ ^- o4 @. H% y    initial_prompt = "Hello, welcome to my lecture.")
$ @  D5 I. U  u. P( _2 M. Y# u9 e7 l
% k% h5 \' t' y0 U/ e( ?* G( ?# xfor segment in segments:
9 U) ^8 d. C4 ?, p    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))) G$ d6 y% e( ~" D6 |
: \4 e$ b. \2 t  Z9 G: l  f! P% }1 y
        for word in segment.words:
! n7 k( H! N4 @  q- U! u/ Z               
! S/ |5 L7 c, r) S/ e/ X! M$ O0 H1 w----------------------------------------
+ }6 W- l& {2 Q: r1 T
4 o$ N. v) F: `8 J, r- }/ W/ l: Y代码说明:  R* W8 a- e2 @6 a+ b7 b; U. \
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
: a# M; _9 O) C' [) G5 Q但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
( k4 |9 N" D1 r  Q# a2,segment 本身是很粗糙的,做字幕勉强能用。7 f& |, G. u/ e/ Q4 k
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。+ a4 `7 j2 z( g9 y- l
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中! Y+ d; r" R% K
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
: f4 S) r1 R4 P& O5,model.transcribe 中参数说明:7 h( @' y, f6 [" O0 g" K
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
2 l" t; I: l$ g9 }其中4 B) n1 f0 C+ G! o
    word_timestamps=True,
# x7 J' L9 d- s7 A- A: w" ?5 h) I保证了你能拿到 word,否则是拿不到的
% C; w8 R, J. ?$ Q5 Q    initial_prompt = "Hello, welcome to my lecture.")
& T" z- t5 g) b+ y- f8 M4 q保证能尽可能准确的断句 punctuation,但是不是决定性的。
: Q$ j( t6 B9 B) l8 m# p. ~其他参数可参考源文件:1 m. n1 a' Q1 A- S9 w* z7 Q' x
https://github.com/guillaumekln/ ... isper/transcribe.py) W+ W. g* w4 p7 S
152 def transcribe(/ g9 {( P" p) B2 s& G
从源文件你可以看到是支持中文的句号断句的。
. Z( D5 g! A2 B. H; c3 y8 D
$ }& a6 r" ]2 @. o5 X, q: Z* C0 B% r$ d6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。1 ^3 `" ?) o2 h
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。  K2 m( d+ u9 [1 ^( P8 I% n3 e9 d6 M5 k
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
* p, e3 [& S3 B+ Q# E% C: q
# J, P$ V$ [) n
7 _5 T* ^4 Q; p1 _, N) N6 |/ M# Y7 t" ?4 v  I6 ?$ l# j1 B4 M; |

作者: nanimarcus    时间: 2023-6-4 11:53
多谢各位榜爷打赏。




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