爱吱声

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

作者: nanimarcus    时间: 2023-6-4 02:10
标题: faster-whisper 更快的语音到文字的识别 ASR
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
5 c8 z  r, C* A  t+ K0 c3 f
- f" t% w2 k" s2 X& ?' @. I- ?6 h9 Z: o借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。/ }: o- l4 N* N8 E
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
  f+ b# w4 l! w4 I) S: Q----------------------------------------
' e/ w9 l. l# X' L# t: W+ @5 P: d- i显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
0 Z7 f1 ~; r2 R9 A在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
2 i7 e$ o- x2 k; Z7 ~( Q----------------------------------------
( C- t9 B1 L" |3 h: d# |' a' rhttps://github.com/guillaumekln/faster-whisper
+ l: i& Q  K' {, B2 k安装如下:
1 E: F0 T! {4 t2 b; G1, Windows 10' w3 ]/ v: i4 Z9 v5 P
2, Python 3.10.11
! U2 ~7 M0 m5 L7 S- j  @3, CUDA 12.1
' A2 i( Z" {7 T+ G1 j5 h4, 在python 3 中安装1 ]$ f( E( l$ [& `. R" g
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1173 H0 C: I7 f/ M- V
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
& }% |9 c1 ]1 |0 {  K# L5,pip install -U openai-whisper
  A4 @3 g  i  {- a, X/ ^这是向whisper 致敬,可以不装
% J: ?1 R8 m: P) w& r+ Y0 D6,pip install faster-whisper
9 c& z# P, ~8 A5 w----------------------------------------$ _' n& U/ _9 a; J/ E$ D  X; y
whisper 我用的命令行,faster-whisper 我用的是python。4 @2 h+ d  v" W3 R4 G
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
; B: W' v) z# W& M% J7 {* q9 ?5 e
----------------------------------------
; C5 I& a. t, ^/ S5 j; R8 I( ^$ ^* o3 F" s- A8 l( M
from faster_whisper import WhisperModel
7 z% S* w* ~4 ^8 H2 {9 L( w% K: @- a! U5 q4 G% [( [
model_size = "small"1 W/ b- n4 H, H9 L" o" u, T
4 U2 V# O$ f7 `) {% e
model = WhisperModel(model_size, device="cuda", compute_type="int8")6 h7 p7 a- [! {- Q* [- z

  r3 C( L* k! E1 a1 i0 g2 tsegments, info = model.transcribe(/ F6 T+ R4 D0 }6 x3 s, v
    sourceFileName,
9 E- M+ x0 D8 v! A    beam_size=5,
/ a2 L; u' W4 T8 W5 l. ]    language="en",
. h) V( ^0 e& x    task="transcribe",
3 b: T5 f9 i: d, G; R    word_timestamps=True, % F& v7 t. j0 r
    initial_prompt = "Hello, welcome to my lecture.")
2 C% _! N, S  \( U, y4 M0 e2 r* K. R1 p% {6 C7 z  n( l1 n0 ]# x
for segment in segments:3 g$ w; h) n0 F7 ~0 r+ U6 S- W" ?9 p0 A
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))( u! h7 ?! {2 q3 s

3 E0 v0 Q. h9 V+ s5 _3 W3 B; y        for word in segment.words:
+ K. i4 _& n, ?2 w7 p/ Z4 y6 U) K$ K               
- B# n& P" a1 f1 h----------------------------------------
) C# ]; j5 {9 T3 O& i
, [5 S/ u* L% H1 }& @代码说明:
+ u9 j$ V9 ^! y/ F# U- A+ H3 I; ^1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
  {* h  N4 z: O但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。) A) S4 [6 `" h: D" c( o* M& P+ L# h
2,segment 本身是很粗糙的,做字幕勉强能用。
) L+ i/ M4 u" }( F( j3 y3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
& u7 P( T% k, g4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中% L( I1 w4 D4 D9 r6 S9 j) c
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。3 X$ u% b( I. M
5,model.transcribe 中参数说明:
; s2 U1 H/ z, w6 C+ C( i你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
' t0 L% |) a6 \其中
! n; j# z0 m: d& Z    word_timestamps=True,
! p, f+ r6 |: l4 a9 c. K保证了你能拿到 word,否则是拿不到的8 x5 [& z  Y7 ?+ {5 F) ~9 G
    initial_prompt = "Hello, welcome to my lecture.")
) B" ?2 b, ?1 J, p; i) z/ j3 m保证能尽可能准确的断句 punctuation,但是不是决定性的。
5 Z( A* C4 L, w# B9 R/ X其他参数可参考源文件:/ ?5 A; b$ f. l3 |
https://github.com/guillaumekln/ ... isper/transcribe.py
, |3 Y8 t3 t. W1 S& r) d3 H152 def transcribe(. ~4 v+ A; z+ T: e5 Q) w
从源文件你可以看到是支持中文的句号断句的。. t8 L' J' Q' g( |
# |" K  e+ Z# v9 W0 S/ S
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。7 z& b; K2 h; J! k+ `
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
2 W* Z4 }  T9 Q  x! ~# T% c! Z' e8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。; `0 r7 e; s- i( f; Y+ q- N

6 h& R) A. O* d3 j. S4 `
, R% J) ]# E( Y% Z7 K& ?% k7 Y7 J& g8 c0 O9 _1 v6 v. l

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




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