设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
# `# I9 ]0 L$ y5 ]. A/ t6 z. d
+ J3 {! q$ U/ u0 A* _/ W借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。/ L" K, [0 h& Q; ^1 j4 Y
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。/ q- T# z7 O7 ?1 m
----------------------------------------2 B7 P7 x: H) Y: P* j
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。8 ?+ f1 R4 e: a5 t% M" x
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。1 o. y$ g" Q! ]" p* M
----------------------------------------( H  c6 f7 u- G2 r+ w" t5 t
https://github.com/guillaumekln/faster-whisper2 ]9 T" E4 g9 F- j% p# D
安装如下:
1 h+ q7 ?8 l, d1, Windows 10& R/ c8 ^/ j* d8 x- C$ T! @
2, Python 3.10.119 Q8 g( b1 K$ [2 W- ]5 B, ^1 A2 j
3, CUDA 12.1
/ G: P- n& y$ `7 Y# |/ Z5 G; |4, 在python 3 中安装! N3 q/ Z- a1 k8 `
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1177 P6 t# b& X7 ~
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
+ A/ n  c- s2 l- u6 J2 l% m# C  l5,pip install -U openai-whisper
- t0 ]4 Z) W8 O2 m) H/ o3 _! O, ]& T5 O这是向whisper 致敬,可以不装4 y; |, N# o9 ?+ x: k& |
6,pip install faster-whisper
. c! m1 I) @/ Y4 ]----------------------------------------" @4 _. {8 H% r, u% k+ p: h
whisper 我用的命令行,faster-whisper 我用的是python。
/ l) H% p& P- F/ l$ h) b下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:2 w. d, l+ G0 n
! n/ h" T/ |# U9 ], G7 R& D
----------------------------------------" y- l: P8 Y& ]1 W+ E& T

# d7 I" P3 d/ R: Y5 i' o4 hfrom faster_whisper import WhisperModel: J. l" P: ?" Y  W, X
+ _$ `5 w, q1 y6 W
model_size = "small"
3 `! Q$ t9 {5 Z8 Q
) a; y" F8 m7 s% rmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
  N1 M; G8 e( f9 f$ T# w/ v: Z3 d5 H6 U4 ~
segments, info = model.transcribe(8 F6 J+ M' \  ~$ f9 r/ @8 S9 E$ R3 v" C2 h
    sourceFileName, 8 V( J: b: D3 U: d8 N+ o' c) w
    beam_size=5, . p! @: t4 Q, S: _
    language="en",
+ t: s; _8 W: j! v# f0 H    task="transcribe",
: C) \: E  h; Z& F' g6 m    word_timestamps=True, 9 g( \' V" G8 ^4 q
    initial_prompt = "Hello, welcome to my lecture.")3 \3 F% i( n$ m! r  ]+ O9 ~5 f' ~
2 [# x* ~9 L  `( I
for segment in segments:
$ A) D; C  N! _$ p. l    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))4 I5 c  S, O5 l' v6 Y

% ~2 X: R" t3 f$ D7 a        for word in segment.words:
" E& z* {7 `0 B7 h                  a- _# z0 f4 J# a2 k8 U+ o0 c5 L
----------------------------------------3 J& W; b0 Z5 M- A% g# B/ G3 J+ p
/ X1 j5 D- v7 B5 @$ _0 s2 t
代码说明:/ x* f9 O. b( J
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。$ r) I5 c3 K3 _
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
$ c! O* R0 e. S  d: u/ Z2,segment 本身是很粗糙的,做字幕勉强能用。
, [; m; G9 s6 X7 d3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。" c1 u+ }/ e/ |
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
6 D! r- M5 P4 q9 D' `: Z比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。5 K5 `& `+ s$ _0 x# G% |
5,model.transcribe 中参数说明:
" F$ n& q0 g2 u9 y' `+ F你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数. y( K- J$ q1 `5 j& R
其中2 h3 w; R0 ~4 g$ r
    word_timestamps=True, # h8 Y8 N; p% H5 X
保证了你能拿到 word,否则是拿不到的
( g$ y7 p6 C; l( w7 p. R/ }$ `4 \    initial_prompt = "Hello, welcome to my lecture."). w2 ]& f" y5 t  T) M
保证能尽可能准确的断句 punctuation,但是不是决定性的。
9 ?1 _% O" [* _. o) X' N其他参数可参考源文件:
3 q" n7 \! D5 o# u& u+ zhttps://github.com/guillaumekln/ ... isper/transcribe.py
! T) a# G* ~, ]; m3 g5 I/ a152 def transcribe(
9 l' S9 b. x* T从源文件你可以看到是支持中文的句号断句的。; ~" i% P' R$ e1 r
7 y0 w7 z+ A. j/ c; I# t
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
3 r5 X( c" y! Y  z1 F. ~2 j7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
! }  W: d, O$ C" L9 v8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
  a3 t3 R  ]6 y# v$ \! n3 i2 Y. Q6 B: R0 U
! U; m1 z* i- V! f$ n6 ~( j* _% _' s! @

* r! }* d- E6 p4 a9 T

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-27 06:30 , Processed in 0.054282 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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