标题: faster-whisper 更快的语音到文字的识别 ASR [打印本页] 作者: nanimarcus 时间: 2023-6-4 02:10 标题: faster-whisper 更快的语音到文字的识别 ASR 本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 3 g2 w8 E% d5 o1 p. ]& i1 l" ]( j* A) \/ L+ u' Z4 s
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。6 A# \2 j1 t8 O4 L) x2 C3 ?
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。 ) `! W+ r/ g! \1 c( ]---------------------------------------- ) k9 e8 h* \3 q1 F7 ~. A显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。 2 v3 I5 l. p: M" K3 z在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。0 z, L" y, f* {2 \7 l
----------------------------------------1 l6 z+ Z1 a; l1 ]- B% Q3 S https://github.com/guillaumekln/faster-whisper 3 X1 K" S9 i4 J6 W2 J! e: u4 \安装如下: a; i' G' F) N* d O2 T! b5 F
1, Windows 10' q$ S1 n2 ^4 c1 g5 ?! L
2, Python 3.10.111 L$ L9 k4 y' ^/ g V, J
3, CUDA 12.11 i% C4 w/ \* G. x3 r1 b
4, 在python 3 中安装 ( X$ G# W" i1 s- h, j) jpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117; [9 w7 N E- k- {# s" m
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。 % e1 C! A, t; A% O8 Z- z4 y% q5,pip install -U openai-whisper `' i1 p x) ?4 O T3 Z+ k6 H
这是向whisper 致敬,可以不装 # n% e% j# C5 b+ }& H6,pip install faster-whisper! A8 r% G: i% G- P* w7 U
---------------------------------------- * M4 N- V% u7 i; F: _# Cwhisper 我用的命令行,faster-whisper 我用的是python。2 b1 k* P- {3 F9 @: P/ G
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码: 1 l: b$ ]- T7 u( p; z& H 8 N+ G7 k/ x* w- Q; ?3 N; u m----------------------------------------8 X S" M+ R% K$ ^. X' }
+ a3 t2 I, d' n
from faster_whisper import WhisperModel9 D& W- O4 X4 ^
0 H! y9 ]' D9 c" D# @* pmodel_size = "small"& k' R- y U- i0 x
4 a. k. v$ M4 m6 Q
model = WhisperModel(model_size, device="cuda", compute_type="int8")8 O- Y8 R9 Q" |7 ]
L! a- X" d0 j6 X. T$ j$ [6 [segments, info = model.transcribe( # @+ ~2 w9 N. f( x sourceFileName, * J; m3 A' H+ M7 B' x) S; _ beam_size=5, 2 \, N6 p% s* s3 ~
language="en", ) [+ s/ p- i& J( N5 m. r
task="transcribe", 4 i/ o Q; U& k7 c$ M word_timestamps=True, 1 g9 q f' f l# V8 O' t6 w initial_prompt = "Hello, welcome to my lecture.")% H$ l l8 Z: N
2 \, d( T6 d6 Ffor segment in segments: ; N' @& |9 Y, g7 u, u, C/ K5 |5 s print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)) \, v$ S. s6 \, C& C q; I: Y0 ^8 g9 w& I# s
for word in segment.words: 5 Q: s; |3 X' Y; Y . `. D& z7 H- N9 k/ K! P. J4 c1 p+ o----------------------------------------9 J9 v) _5 l# X0 V+ p