设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
% L9 _4 D& L3 C* j  g
0 R& Q. f' {% _借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
# `' V  r7 v- k: j0 s效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。$ C" e% z  I3 \! \4 b9 k# h
----------------------------------------/ z: C6 T0 Y. q2 a
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
( l, p/ j6 I( N9 e2 z7 m/ G在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。& t, ^' @% F/ M! K; }  V
----------------------------------------7 J; A) |0 @: x& e5 N& @1 ~
https://github.com/guillaumekln/faster-whisper1 V& _; E8 e3 G
安装如下:' k( |" x9 V' }9 V+ o8 ~
1, Windows 107 d( ]) H# q9 i6 I" u5 z- a$ V  Y
2, Python 3.10.11
* r" F2 ^, r6 S- a' n9 M4 V1 `3, CUDA 12.1$ b9 n- ]5 g" ~! ?
4, 在python 3 中安装
7 P3 b" m$ m5 @7 k, u% m( h0 Spip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
& E! k% l7 ]% X* S8 e! z这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
8 L6 n, G6 q% V0 ]+ P' _5,pip install -U openai-whisper
+ y6 n7 }$ n# z' u这是向whisper 致敬,可以不装
3 R1 V: Y- U$ o9 ~( e& ~6,pip install faster-whisper8 k  N) u# a6 S+ t2 l
----------------------------------------- {' ~! f) t  r5 V, R
whisper 我用的命令行,faster-whisper 我用的是python。) [/ C( g/ x- B+ ?0 N; X( m
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:* H' B* a' g$ s$ w# p: f5 Z
# W: p: U" a# a4 ~. ^4 ]/ V5 U
----------------------------------------
+ e! I( y) g  p7 s# N* g7 |- r) |# ]( j$ z( g. \: L/ N
from faster_whisper import WhisperModel4 y/ c  Z* Z* \; I) b. d

6 h! l  |8 Q# c4 c9 nmodel_size = "small"
! G& Y0 C2 o/ e; `0 {% t
* U0 L2 J/ g% Q6 o" _model = WhisperModel(model_size, device="cuda", compute_type="int8")) y. e1 m* @5 R3 l: D9 Z% g
, `! S, U$ R( S2 Y% H6 y. l
segments, info = model.transcribe(
% p  N7 _. O* n2 s    sourceFileName,
* |. l4 r7 c) ?5 ?5 {' C1 z8 C$ d    beam_size=5, 6 @* g/ U+ A! }
    language="en", . T' F; P- G9 U7 @
    task="transcribe", ! {* `4 h4 h: O/ V
    word_timestamps=True, . v# g- W: \* c- J  M0 g$ A( m
    initial_prompt = "Hello, welcome to my lecture.")  m. k' ]+ \+ l7 w4 k+ P1 ~
9 Z# {. p5 K$ H) x* j, R7 n
for segment in segments:4 E% L1 S: L! x- E9 d
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
9 f3 y0 Y; e9 z3 S) y4 B2 m" f9 {/ i6 r. |) K5 [) S
        for word in segment.words:
/ ^7 w; b6 D  [# E5 {& t  A               
( b1 m+ i; f# e7 x6 s----------------------------------------2 Z5 j9 ]/ M5 @  z1 l. v! _+ a! [

9 Y/ l' y' ~& z& U* N代码说明:$ l' |1 I2 X% o9 h$ g8 K+ L. j
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
. u8 C8 C$ l! {6 L0 L; u但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
6 l% N7 J; b( j+ G2,segment 本身是很粗糙的,做字幕勉强能用。
2 L. X' [9 n0 L0 }5 G1 `3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
7 M, i4 g* p. a) h7 v3 b4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
; |6 D! P+ L( }/ Q比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
9 n9 K  K7 Q) O: r  x5,model.transcribe 中参数说明:
) T# p7 v& R6 ]4 f你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
( u; D$ m" a0 j) q1 v* [其中; E, \0 n' b2 `" e% c5 W
    word_timestamps=True, 4 q. P' _% E/ O' ^
保证了你能拿到 word,否则是拿不到的: U3 B5 T, z( [' s
    initial_prompt = "Hello, welcome to my lecture.")
+ ]0 A+ O2 \2 @) C保证能尽可能准确的断句 punctuation,但是不是决定性的。6 l) T) [1 x8 d
其他参数可参考源文件:
8 ]4 F! i" j: k3 w7 t' W" Vhttps://github.com/guillaumekln/ ... isper/transcribe.py% P6 }8 G4 K. d9 r  e$ r+ a
152 def transcribe(5 k$ k: ?7 }& \6 [. g2 j9 \
从源文件你可以看到是支持中文的句号断句的。
9 Q7 R, L* f1 o% u) O3 H) e9 U1 C6 [5 B: z( Q
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。+ c+ ]  q1 Z& Z
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。5 u1 Z8 J& t! T0 \9 K
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
5 F. r) z2 c4 X0 N8 C& Z' F! j; t: j9 @
  y& O) y- c7 J$ k# i7 {

/ v8 \+ J) c9 u/ n+ x

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-20 09:15 , Processed in 0.057413 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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