设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 + t0 h# Y! G2 s  G! V

& @5 m5 R# I8 @, P9 |$ T借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。& q0 q. |" y& S! t2 ^
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。" g1 D( m% o" D% Y
----------------------------------------
) \- G8 `/ r, G显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。( O7 B* x  [2 A4 a& T5 e
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
( [) G' n$ N) A7 h- ]----------------------------------------
/ r/ d+ c! e1 `. z: p  jhttps://github.com/guillaumekln/faster-whisper$ C( c% {0 o: K9 d
安装如下:
+ k4 C- ~  O6 ~1, Windows 10
7 T0 u1 e" z6 w3 m4 h2, Python 3.10.11
" U1 x7 g& S0 V8 a3, CUDA 12.1
$ c9 |$ M8 P5 G, {0 S4, 在python 3 中安装$ t) @8 G: `5 R$ g0 S
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1170 D8 O. c$ z  u, z4 o$ U+ Y- L; V0 W
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
4 y2 j' p5 i7 b9 a4 p; E' R* Q5,pip install -U openai-whisper7 g7 I% a6 ~& O( R
这是向whisper 致敬,可以不装5 s2 `) d7 [" A& Q9 u; S* k' h
6,pip install faster-whisper7 F1 B! S! M: A$ t9 }/ q0 R
----------------------------------------! F, K+ k8 A+ S; g( \* j3 F7 P
whisper 我用的命令行,faster-whisper 我用的是python。: E$ l. ?6 T  |; h7 {2 N9 ]! e
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
, }4 U. R; b& k+ j2 p2 b1 @4 U1 p+ B9 r/ c# P6 p" m+ N. x
----------------------------------------
4 @5 M7 `. t4 e! S5 b
4 t2 g9 r& Q! Y+ ?7 m- |from faster_whisper import WhisperModel
0 c7 J$ o7 F& k8 h; {
. r- w0 O( d3 ]( J7 Omodel_size = "small"
7 p* \' a  G; j/ Y$ e7 f, b: a% U6 ^& f! f; H" G% k; m
model = WhisperModel(model_size, device="cuda", compute_type="int8")0 V4 z: p$ p: a/ j

  a! n4 s+ ?& x8 B! esegments, info = model.transcribe(% P7 {* Z* ~" V  j
    sourceFileName, - |3 _7 H3 s; I. V
    beam_size=5,   x' V! S5 |. b. G. p
    language="en",
$ V5 R: W3 f. h6 B: ]    task="transcribe",   n0 j: D- z% L( B. O
    word_timestamps=True, 5 V9 h2 N& X7 V4 q/ e
    initial_prompt = "Hello, welcome to my lecture.")! C  q# L. L$ E$ ?9 a

5 V3 t6 \7 Q) J0 y2 Y' gfor segment in segments:
# |7 r9 L1 ]! a& E4 j  S" T3 c    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
5 I, _8 a7 c  h3 H. g
$ j" n, N# p4 {+ h        for word in segment.words:! ~) Y' r( y/ H+ ^1 t5 `+ a6 s4 Q7 P
                ) V( ^" y3 L' J1 z: k# k- a# K
----------------------------------------! `0 y4 m' h% m/ S& S
) `0 j" G2 Z! O: N2 f* C7 @
代码说明:
( G/ z$ s" q( ~1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
+ U( T/ y9 E, n% w但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
  k. x1 x1 h8 [, ^, _2 H2,segment 本身是很粗糙的,做字幕勉强能用。+ V1 I3 W( k! q: P3 W- c2 _
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。/ [) |  ?4 P8 y5 d% c, E  k
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
+ W; r" h: y* H( r. H比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。" O3 g9 E8 F5 p& Q( J" @# n
5,model.transcribe 中参数说明:% ]4 L, e/ Y6 t1 D0 N$ ]+ j7 ]
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
4 ^. _: @9 O. e3 M3 C其中
, `) o3 {, u+ Z    word_timestamps=True,
6 U8 k& m% ]) H) r3 J保证了你能拿到 word,否则是拿不到的
/ K7 Q+ x3 O5 W: l    initial_prompt = "Hello, welcome to my lecture.")
6 p, S% e' [! x- K( M- Y保证能尽可能准确的断句 punctuation,但是不是决定性的。+ j) \" Q2 n8 v- }  Y  s
其他参数可参考源文件:- F% f8 a- ~% z: _* f
https://github.com/guillaumekln/ ... isper/transcribe.py
! p" _" y: b$ b" V152 def transcribe(- K- [# O. O* J
从源文件你可以看到是支持中文的句号断句的。" U- G7 t' X; F& j$ c" a

/ V0 F/ _# E& B. ~7 q7 g6 b& _6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
( j; n8 t+ H- n/ V' }. c+ ?7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
! A6 d4 Y. O, |' q* j8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
: V& Y5 K* _+ }$ N( G2 H% U  @* b$ {" b1 \; t% y. T

6 @  s- o4 T; c! d/ u9 X1 Y, ?5 I7 o7 a9 a

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-5-7 10:36 , Processed in 0.058413 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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