设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
! E* V' U2 Q  p) ]; ~8 a0 \5 u3 F& B7 @/ f( M3 x, S
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
$ `6 }$ l2 @; C* ?7 c2 c) d! g效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
2 ~6 r4 \2 y+ j1 \, Q----------------------------------------
& v. |( A( |3 x3 j1 |6 x$ H显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。% M. S3 u- [1 P6 _: p' i1 u( l
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。  S# d/ U4 o2 ]+ H4 A& F6 H
----------------------------------------0 {7 C; k2 A' _! O2 S& j
https://github.com/guillaumekln/faster-whisper
1 y# w7 H+ U: A安装如下:. l* e1 B3 s/ o' m( i
1, Windows 106 S. w/ H, v! z$ \0 `. Y
2, Python 3.10.118 `; R! H8 _& c
3, CUDA 12.1
6 ?, p  n# U: \* Y9 g; u+ X4, 在python 3 中安装; F& n7 y; Q4 S2 B8 i; C, N% O
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
8 U  d3 I8 D9 B% Y' H, Y/ |这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
# h- s$ C# e1 _. |: O+ m! Q% x5,pip install -U openai-whisper
, _, J8 ?; A6 s( Z4 G/ z2 K这是向whisper 致敬,可以不装# G3 I9 {2 A0 B2 R. {
6,pip install faster-whisper: z6 D, R' d, n) `2 t5 Q
----------------------------------------
" N- y  J3 g- E8 u' J5 Ywhisper 我用的命令行,faster-whisper 我用的是python。
1 V2 L* X# j/ v+ |' {1 s* G下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
5 A% v3 C* D: ]7 E2 [  c
& y; e3 I5 J8 S, a" e- e" \& v----------------------------------------
$ |" q# }8 y  S2 S2 r8 i, q4 r
4 Q. z0 i6 n6 _4 sfrom faster_whisper import WhisperModel
7 S4 }+ g/ ]: _/ b8 f# e* R; s+ e  \8 i  W6 k: _& T5 d9 X; @' @1 K( }1 k
model_size = "small"0 C: @/ d+ }8 {! n
! _2 I4 t. m( x  ^* ^
model = WhisperModel(model_size, device="cuda", compute_type="int8")4 p3 y  q. [( m( H9 l

1 X+ _5 a- b/ Z) }, R; Nsegments, info = model.transcribe(
4 p0 |% J  K9 {2 I7 o& J    sourceFileName, 3 ~5 [. e5 u# {
    beam_size=5,
/ t' O  d2 b) I    language="en",
6 x- i* \' o3 m9 f6 Y; f    task="transcribe", . i8 w9 q# [) a
    word_timestamps=True,
4 v, [" t8 |" u: p    initial_prompt = "Hello, welcome to my lecture.")
( [; r4 O6 q) A8 F  }& t4 ?! c; P4 d0 F* v; e
for segment in segments:
. e, v* D6 y7 p$ t4 e    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)), y6 ?3 g" a2 M; y! t& e) ~6 r
% c1 Z( |4 Y  B- ]
        for word in segment.words:8 t3 Z! r- ?3 d0 n6 O
               
9 K1 V0 Z* a3 D) r, m, V- {----------------------------------------% f" u+ E$ u( z2 s: C% _

' O; C! V2 K+ H$ @$ D代码说明:$ ~1 Z1 W: E" e8 m. E
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。6 l9 b& S" |( C. q( H. }7 l( ~( q
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。5 x! @/ {3 D2 |9 ^+ ]8 m
2,segment 本身是很粗糙的,做字幕勉强能用。4 b1 o- z% ?; w3 y4 ]
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
- a# U6 Q) W! p# I4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
' l+ t' W4 q6 B( U% W& ?比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。% Y/ p$ f3 K- Q/ g* e
5,model.transcribe 中参数说明:# B' h4 q9 k  X
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数2 p: U- j9 O/ [; A& F4 h' \
其中! {9 T3 q- z+ r3 p4 n
    word_timestamps=True, 5 U) P! V( J' r0 {+ |. x
保证了你能拿到 word,否则是拿不到的8 x0 H1 o) L1 a7 _$ {
    initial_prompt = "Hello, welcome to my lecture.")! u% i. K/ {$ @5 V: T! y
保证能尽可能准确的断句 punctuation,但是不是决定性的。5 Q/ E" T  O# s! B: N4 a# F
其他参数可参考源文件:5 P: [% U. @( F
https://github.com/guillaumekln/ ... isper/transcribe.py
. x' ]3 S6 E( c152 def transcribe(' P" p* O, W  S  g( G- Q& j, ~, G
从源文件你可以看到是支持中文的句号断句的。
) {* e0 Z: O" b# }' |' b7 i3 M. q" I  ~
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。' w" n6 `  a0 D5 w- }3 _4 e. z
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
/ |% k5 V: f7 x5 [2 F/ R% j; m8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。( C+ j( n2 K% @" k+ Y

2 h4 r& G7 U) i
6 L4 Q/ t' ]* w! p( R1 X4 y" P: `# m8 W# [

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-3-7 20:22 , Processed in 0.057439 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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