设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 % W' w6 p0 l  n4 p3 o6 {$ l
+ S( f) E9 F# e' ~' a
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
8 H5 \. P3 X% E5 B效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
1 p7 x, E' @2 u+ f----------------------------------------
6 V( C8 x- Z) V9 d: r, v9 v显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
/ H  J1 ?# [5 u' i* S: B( L在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
% R) P$ i- a+ Q. f----------------------------------------/ h7 R1 p# D0 _$ ^% w$ u
https://github.com/guillaumekln/faster-whisper' P% ]0 g/ H  l: w2 K% E" B
安装如下:
5 P5 B! [5 I0 l" {7 [+ d& C0 {, N6 O1, Windows 10
2 y. X: L$ k7 H2, Python 3.10.118 Y- F; v, r+ j8 w) u4 l& ?" E3 d
3, CUDA 12.1
- B! k0 G$ b: M4, 在python 3 中安装( C: q; M% H& P( Q
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
% ?: l% m- N+ E9 E* T8 X$ u这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。% W$ s, d6 [. _+ Z/ [
5,pip install -U openai-whisper
' Y( `5 Y* `2 s* a( ?3 z这是向whisper 致敬,可以不装
# z  l; J; X; K" s( P6 D  q6,pip install faster-whisper7 o/ [+ T- k" M
----------------------------------------
' N, r" y; c8 J( c# b( z! H/ y* hwhisper 我用的命令行,faster-whisper 我用的是python。
9 C# t  W% i# P下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:- j# A5 j: \7 x' a" K
8 X& ~* z) S! W' p/ Q' m. M
----------------------------------------
# w2 h' R% z  j, I' D/ ]- C% Z" @2 ?
5 x8 u4 T- K: I) Z2 y* p3 Ofrom faster_whisper import WhisperModel
1 U7 N4 L! G1 B# O, ~6 p  n1 K2 d( D7 u$ ^8 v
model_size = "small"* Y" q: K) k- b4 c

# M& Z/ p3 G. }4 L: [! X9 mmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
2 [/ U4 @6 `9 [# u% ~( z9 r. Z0 {$ [$ l& k
segments, info = model.transcribe(4 i* R7 t. q  o! ~- G
    sourceFileName,
& Y; n- w: d* H" K5 \3 H1 ?' @    beam_size=5,
' W; S* z! ~2 @$ a$ K0 d0 `, `    language="en",
. [' v- d- D" a7 C1 Y  G    task="transcribe", . ^, i& N1 I5 T" a
    word_timestamps=True, 9 w- ^2 Z# M! c( B5 P$ I, |) L
    initial_prompt = "Hello, welcome to my lecture.")4 O. \! B  {- Q2 k: Z

( S: {2 W; S1 l" T6 E, Pfor segment in segments:  F) I) _7 i9 }7 y* @- H4 p( h2 n
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))7 t: Z$ X! ?4 l' n9 e1 u7 x
' X& P1 i* k' X6 N
        for word in segment.words:3 I2 X& I: }( L3 B  U/ e' l
               
0 `1 P. K  w. O4 }1 a" R+ D----------------------------------------
+ t# O6 X' {! u1 B- ~
0 M- H$ A* \5 O$ N0 ]代码说明:
/ b6 s6 I5 I2 I- W: p) O0 t1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
5 I6 E, f5 h1 U+ f9 G" `& M/ t, \但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
0 Z! V: l% j3 P) s" V2,segment 本身是很粗糙的,做字幕勉强能用。
& s: [# L  `9 G* {2 `' n9 r3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
4 O3 g8 B5 _+ t# ]4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中, X$ k; s  ^$ o6 q  a. A9 [
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
8 p, j- k5 l* b2 ?0 w0 \6 s5,model.transcribe 中参数说明:
3 @5 Y* z. d+ J) Y/ ~6 D& I你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数5 t1 m- f9 Y, j8 h1 G3 ]
其中& R# e7 m4 I6 r- o7 W# k& ~
    word_timestamps=True, % e. {9 |8 U1 s8 a  O2 G( c
保证了你能拿到 word,否则是拿不到的
, d0 G  ]9 K6 F+ _7 _    initial_prompt = "Hello, welcome to my lecture.")
) K+ k4 i- S+ A1 W8 n保证能尽可能准确的断句 punctuation,但是不是决定性的。* k' b# N! P" P
其他参数可参考源文件:
3 M9 Y+ p) L8 z# a1 J* V' phttps://github.com/guillaumekln/ ... isper/transcribe.py% z3 ~  a/ b/ i1 K
152 def transcribe(
$ d- \1 r" v: I8 `从源文件你可以看到是支持中文的句号断句的。
" {- j: ^( r9 t8 {  M9 x9 u8 d3 l2 }3 m! p0 B7 U
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
% [# {8 F  _) s: _* ^2 f7 N1 K& D7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
9 }9 ?9 p6 K3 p" Q, V- s8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
) r" F% ~" ^2 s' o5 c) y/ n1 Y1 B( P2 {; N! Y( \
, O% U7 g* W+ }6 M

7 k) s4 E1 H, p% k( U

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-11-17 00:38 , Processed in 0.029322 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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