爱吱声

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

作者: nanimarcus    时间: 2023-6-4 02:10
标题: faster-whisper 更快的语音到文字的识别 ASR
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
/ w/ k( t. V2 G3 f& \# d% C1 _7 p- Y2 [' |8 m
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。% I; y4 `: t( K9 y  n# p- R
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
, q; i% L6 E6 [+ t9 l----------------------------------------
' m# @9 k8 H" N显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。5 f; k6 @0 z$ I: H# k2 T% Q2 ?9 q
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。- H( c0 y6 j# u- F. Z
----------------------------------------8 k" h( p  m' C# P1 R
https://github.com/guillaumekln/faster-whisper. l8 g$ P$ @) |1 r7 m
安装如下:
, ^! d0 f$ g: ~; H1, Windows 10) a9 q" d4 S/ H; j  D/ v
2, Python 3.10.11- _5 m) c; @' h
3, CUDA 12.15 @0 n( `8 X' w+ q2 ^' h
4, 在python 3 中安装5 W3 X( }* M, L3 P$ }
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117' H. ^8 G; @: Z5 Y0 M' q
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
/ m) O% Z. U- E, F' Q7 v; q5,pip install -U openai-whisper
) ~  P8 t2 {; U3 |6 ~' O. U这是向whisper 致敬,可以不装" M* P* J$ W1 x* q, N
6,pip install faster-whisper
! D5 w2 s6 ~7 f6 n----------------------------------------  |' y  M0 C" W
whisper 我用的命令行,faster-whisper 我用的是python。+ Q$ z3 V, ~, m$ D
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:/ f/ y" V7 ^% v

' F2 B7 B) q, X----------------------------------------
# M; [) t# V4 c5 c1 R& {' O# _4 p. P6 K3 p
from faster_whisper import WhisperModel' d3 j* X: ]# v3 N
% c" {+ y+ b! @: }( Q: q
model_size = "small"
0 y0 g1 g0 K/ z" K' {
+ }7 }8 y7 O, w( J- Emodel = WhisperModel(model_size, device="cuda", compute_type="int8")& j; A& C' p& O, q# L. o
( [& j% J5 X' _& j9 }' H
segments, info = model.transcribe(
! u1 s( C! q- \" @' a. G( N, U) a5 F    sourceFileName,
8 ?/ @. l% j; I, m7 Y% x7 M    beam_size=5, 3 w: w. u; n* Q! ^6 M2 `2 @2 Y
    language="en",   W7 G5 j$ f1 p0 S, i
    task="transcribe", 5 G/ k' E, D- F4 u
    word_timestamps=True, : |* k! |  S. _. E  r/ [# R9 c/ r
    initial_prompt = "Hello, welcome to my lecture."); ~9 ]& c% Y# N& I$ a1 i
! b3 K$ Q+ X$ T! i: X
for segment in segments:
5 L$ e; k3 b  s) G' b: E* h    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
! D, k5 y( i3 o6 \. ?& z4 b  t; e
+ B4 M% @* h" r, K0 [- L        for word in segment.words:
( P; E+ L7 n2 {5 a" E  J                1 |; c: [4 K# e) C7 k  G7 R
----------------------------------------( M" W6 C' [% r# q; Y6 W# A
$ E' {, _* T0 O4 Y( v$ x
代码说明:# j4 O0 e4 r# C( d0 b. u9 \$ v' d
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
9 j4 g6 Z$ t% j* ]$ B& }但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
% ?! g* [! Y, _2,segment 本身是很粗糙的,做字幕勉强能用。* t" D7 D( C1 N1 d9 R0 v* k) i+ `% C
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。9 A9 G9 `2 M' Z% V1 I  F4 C
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
* t) Z$ T0 |& R( H# ~% F8 \比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
1 T( I; A( s7 R( \5,model.transcribe 中参数说明:  C: l1 E! y& a4 U0 M: E
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
& K$ V$ O  o3 {/ P其中
, O9 ]; P9 [( h! N5 r- ~    word_timestamps=True,
) L/ k, T/ c9 u4 \保证了你能拿到 word,否则是拿不到的4 g5 n0 ^' h; U8 L0 T6 P' z0 V
    initial_prompt = "Hello, welcome to my lecture.")
, l& \9 _4 i2 Z0 V1 c7 O保证能尽可能准确的断句 punctuation,但是不是决定性的。
6 A; I; x3 j+ O& n# {# n其他参数可参考源文件:
8 W7 o( r% ~/ w) v' Q' o: z# uhttps://github.com/guillaumekln/ ... isper/transcribe.py; ~0 C- p0 F8 j- s8 {" ?4 S
152 def transcribe(2 K% H+ e/ p* C" m7 Y, E' ?
从源文件你可以看到是支持中文的句号断句的。
) z) ]& L( l  h1 A1 V( e- [0 E; w: b9 i0 v1 r2 O4 x/ J. q
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
. y# d3 M: j) F7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。' R! s1 B! A/ p1 ?& L
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。4 D4 R# U4 X1 b. v1 K) T8 x

/ b. J5 L( ?7 L/ `4 P6 X- v+ T
7 q6 ]; e. t* _* d' B6 S1 ?
( E' ^  K) _0 {, P( }0 V6 d
作者: nanimarcus    时间: 2023-6-4 11:53
多谢各位榜爷打赏。




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