设为首页收藏本站

爱吱声

 找回密码
 注册
搜索
查看: 4944|回复: 1
打印 上一主题 下一主题

[信息技术] faster-whisper 更快的语音到文字的识别 ASR

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
2 W" E  o) l, Y3 [
( I! j8 R! w7 E& y( o  m: {借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
8 u, R* N/ [6 X$ l/ b效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
. L# z7 `# n; p- u. A+ ]& X----------------------------------------
/ L9 U' I; V& e0 Q9 k+ W1 Z显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。5 g0 @- e! x. b5 h( e3 T  ?
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
4 }6 }% X+ b6 o----------------------------------------) Z$ H! s& c8 X7 h- b+ p& D
https://github.com/guillaumekln/faster-whisper* r" B1 b8 r9 m8 t8 J8 z% |
安装如下:- }6 i; w& v+ y1 |
1, Windows 101 @$ s  Y6 n: E6 c
2, Python 3.10.11' n8 h. A1 k* ~3 Y5 V: J
3, CUDA 12.1# j3 L) b/ ]. e: x) [9 h
4, 在python 3 中安装* C& z) M. }) O& K' B! B
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117: S& d5 z2 o, P' `3 r  u
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
/ @2 c1 C" I6 [& n7 i' p/ b$ A5,pip install -U openai-whisper8 S( M; l* @4 N) V. W, A# h0 R* V
这是向whisper 致敬,可以不装; f  c$ \9 s! L2 O9 F9 Q! T9 i
6,pip install faster-whisper
1 j' `9 x6 r4 X0 O/ X6 W# f----------------------------------------- ]. s$ {; s! w$ H$ x$ G+ N
whisper 我用的命令行,faster-whisper 我用的是python。
: F3 S0 G+ }( R) i( ]- C! m下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
4 P+ _( @7 b. T. ~% s/ b* x# @+ c. F/ Q* v' h  V
----------------------------------------0 |$ K5 S8 y: W* Q3 n3 T

% ]- f/ l, o* e/ e; U% jfrom faster_whisper import WhisperModel
+ v( U8 w; `1 |+ t7 H+ e1 a3 {3 ?6 M4 M$ v0 M. L
model_size = "small"
9 G* [, N8 j; v4 P, @$ O
/ I* {3 W3 P( c" q# U% fmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
7 T; C( ?  L# i. u' t' S$ p
* x9 W0 R. C' k: tsegments, info = model.transcribe(
2 b8 g8 p% X" M! W+ Q    sourceFileName, / ], `! O3 X# C. Z* K4 _
    beam_size=5, 6 a- p! X8 p; G
    language="en", 2 I+ B6 X5 w, ?3 J8 B( R  o
    task="transcribe", . D6 a0 D! o( O! h" k& R3 {- p
    word_timestamps=True,
$ W6 D9 N* ?. r) \: q" q7 q    initial_prompt = "Hello, welcome to my lecture.")7 _9 p0 l8 G2 g+ L+ w% R7 @; O
: F; w) j% E4 M
for segment in segments:
# `5 Q9 n' e4 n9 R( C& J    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)); o5 y" j0 C9 N% u: z
  E3 M0 T, W! U# ~% E! M
        for word in segment.words:
# ^4 Q& s& I" S; P& O9 \                + k8 L$ v  l$ F1 V( Q
----------------------------------------$ J! m2 T! H1 I' v7 p% C7 N
4 i: l* c4 s  W9 j. @3 j
代码说明:9 i' W+ I9 b8 m+ l. q( T" n
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
7 U. D" }$ n! o- ~但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。6 Q# i8 v" @' L- s
2,segment 本身是很粗糙的,做字幕勉强能用。7 @4 l9 j  ^. g9 i+ a# E8 C0 G
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
3 Z, `: \# O  z+ x& {3 ^* z; ]4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
3 U4 U: P' K! \! D比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
$ C$ N: V( i  p. V, u% y4 i5,model.transcribe 中参数说明:) J9 U* G. E4 s- G4 e  V7 k2 d# R
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数- t1 ^$ b  h& H% F$ G* t* _! m6 H
其中+ ?; a+ g# `: v' b8 `' P8 |- q
    word_timestamps=True, 3 Y- k9 I3 z7 a# x, W; [, x
保证了你能拿到 word,否则是拿不到的1 i6 ^' z4 j* |  U; x  j
    initial_prompt = "Hello, welcome to my lecture."), b; i' Z+ C; s8 K; m4 w0 R
保证能尽可能准确的断句 punctuation,但是不是决定性的。8 e/ h/ ]- Y; u! t/ K
其他参数可参考源文件:. L7 L* ^3 [( @9 r# Y( n
https://github.com/guillaumekln/ ... isper/transcribe.py
( c4 ?0 }- W( |8 j152 def transcribe(
) R/ ~7 E3 j( G8 a从源文件你可以看到是支持中文的句号断句的。" X3 A; q7 w8 P; N

9 b7 a. @" e6 j: S6 I6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。, ~1 \% Z3 J' {6 U, K0 P
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。- H, Z6 Y+ l. W. b7 \5 U
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。3 G' r, t& x. O# ~; R' c' |2 _
) I: J7 F4 w  t) a) ~( }: t
# @9 d' h$ |# F: F! X
6 e  l! v6 [$ a/ y

评分

参与人数 4爱元 +32 收起 理由
蓦然回首 + 8
唐家山 + 4
老票 + 12
老财迷 + 8

查看全部评分

该用户从未签到

沙发
 楼主| 发表于 2023-6-4 11:53:23 | 只看该作者
多谢各位榜爷打赏。
回复 支持 反对

使用道具 举报

手机版|小黑屋|Archiver|网站错误报告|爱吱声   

GMT+8, 2025-11-6 13:49 , Processed in 0.026583 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表