设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ) V2 h1 e% O  \- J+ `

' ]+ G6 x% k- [6 ]$ |+ B9 F& X2 ?% ^借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。, a0 ^1 `& l# e) G# |7 ^. k8 ?
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。" g; [' S9 r; U% G+ K8 V' a* b9 v
----------------------------------------
5 ]; T( R7 s& t6 @显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
( D& Q6 n; f( v" v( |+ j在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
$ y! ^, p1 s8 y8 v: @4 I  z----------------------------------------
# L( ?8 n8 b; d0 P+ B/ W3 Thttps://github.com/guillaumekln/faster-whisper8 @1 m' n) ^, {5 {. c
安装如下:
3 R4 }8 F" ~' I  _1, Windows 108 w( m# D( N3 [2 t
2, Python 3.10.11+ ]/ d0 U, h6 R2 ^. y5 e% h0 t
3, CUDA 12.1
- @8 a) j' s  ?2 Z9 f. [/ A4, 在python 3 中安装! V8 G& ~  R! N) g
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117- J. c2 n  `/ O
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
6 u+ }! M$ M4 E1 P5,pip install -U openai-whisper
2 t( b1 Y9 A* N* u. q# o$ c, G这是向whisper 致敬,可以不装  _- e, J4 q7 m8 o3 v$ y
6,pip install faster-whisper
3 M- C7 n/ `6 X/ o% Y- L7 b----------------------------------------
8 @9 f- q! }' S$ b$ t/ _whisper 我用的命令行,faster-whisper 我用的是python。
1 A: A4 U' @& Q$ }下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:+ m$ M4 N  f. e/ F: w1 ?2 d+ Z
* o% t* j/ f0 B+ I' z9 z+ c
----------------------------------------+ `/ Z/ |, }! u7 J! [

+ [; ~$ ?  a2 m4 e! zfrom faster_whisper import WhisperModel
" i/ V: A6 x2 f, c% t5 y7 O6 I6 {! o' K% |* U
model_size = "small"5 U3 J" c- @7 m6 O& f- I2 \+ n9 ?

' C2 s# x( R/ @, o/ T, _) a! Dmodel = WhisperModel(model_size, device="cuda", compute_type="int8")9 q' ^) ?& |- Q+ z
* c' l. Z4 h5 d: a, M
segments, info = model.transcribe(
9 I7 K+ G# d+ F9 I2 F    sourceFileName,
) G& y1 V$ |$ W# g    beam_size=5, * F, m# Q4 a  Z4 c3 C$ ]. L! R1 O
    language="en", 4 T1 F4 X6 _! |) h
    task="transcribe",
" Z. c& j( z0 N/ W* L    word_timestamps=True,
6 ~0 C  P! @' s3 }# ?! ]    initial_prompt = "Hello, welcome to my lecture.")
3 z- ~/ t! M  O. t, _: H; t0 G0 E
+ W! l8 L+ N2 ?for segment in segments:. U1 f; v" i  d- |
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))2 s# O" ~+ w$ Z0 i% |& X* s
' D$ d. w: {' f) g: y6 P+ H
        for word in segment.words:' |* _- c. o) h) _* t! M# k
               
  ?" f5 q4 r* N8 p3 X. A----------------------------------------- L, _9 I! D( w- K  o! v! ]
6 Y" m$ M6 G1 w/ A. B
代码说明:
& @9 L% }) K  r5 z1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。' p4 p5 r8 f  x, K4 p2 K# t/ P% L
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。! A: Y$ p$ c& I
2,segment 本身是很粗糙的,做字幕勉强能用。
' j% M4 T1 y! {' \3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。( `; C. J: E2 s# m1 m9 G) b
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
* u) U; ~. J) Y比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
) i, m$ e4 _- N5,model.transcribe 中参数说明:
8 O5 l  a( A" y你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数" ]0 f. a7 d3 I2 y- y$ F! F
其中
( J* a3 d" i7 A! T    word_timestamps=True, ; Q# @4 l0 G/ {% s; A  c
保证了你能拿到 word,否则是拿不到的* h4 Q8 X. W  _3 e8 V
    initial_prompt = "Hello, welcome to my lecture.")" Q, c1 f' _+ a3 E
保证能尽可能准确的断句 punctuation,但是不是决定性的。
3 l+ t$ ]9 Q' s5 G! ?: {其他参数可参考源文件:
6 Z4 R2 {+ t" m. W7 ?3 thttps://github.com/guillaumekln/ ... isper/transcribe.py/ F6 l6 K' X. D8 [6 ^! c
152 def transcribe(- \/ U) H9 o5 Q* {3 l1 J- ]
从源文件你可以看到是支持中文的句号断句的。1 Y, P* M. C3 k

; x  [1 t. I. X/ O' {, c6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
* F% i( W7 K, f7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。2 i8 E# _5 [8 p4 C( e* d* y
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
/ i8 u9 c# m' r  H$ O+ h. T8 b& V, `% A, p- N' a& Q
/ ^+ I8 @0 ^  d& `. `: F3 p

5 {4 U) K  V* m! A0 Q7 k9 k

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-3-4 13:51 , Processed in 0.054402 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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