设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
; x8 m+ `+ b- N: L, S
/ N0 ~) d7 w6 |0 J/ t借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。, C& v6 t9 ]0 M/ h
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
1 Z2 {) T4 w4 V; b3 k/ q( f0 t----------------------------------------% q' |+ k/ T* P- _9 I( t( ~8 I
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。/ ~- `* E4 m3 w+ m
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。* B$ b+ {# b& _; j6 f  X& B
----------------------------------------
0 o5 f1 h) d! V+ L$ Ohttps://github.com/guillaumekln/faster-whisper1 ?! U0 p" N2 [( {$ Q
安装如下:8 z! p+ x$ }2 `/ K/ C( m, p' m$ n
1, Windows 104 S! d  b9 P! Z4 a! m+ e. b! B5 f
2, Python 3.10.11! y& J: X7 v. I+ h! @2 p6 r  _
3, CUDA 12.1
: M+ t' f! g) s0 M) k% ?5 q/ H4, 在python 3 中安装
. o; N* q6 g- n8 ~4 J! q9 [' fpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
- E* S  x1 |: L这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
: f- G( O9 F) ?3 _3 \: d8 M5,pip install -U openai-whisper/ m, F# c! M$ O! P( v
这是向whisper 致敬,可以不装
( [/ r+ _0 z% R0 w6,pip install faster-whisper
- [" S; L6 g/ f1 _0 H----------------------------------------
) a6 s- n# c- S7 `$ s% g. mwhisper 我用的命令行,faster-whisper 我用的是python。& t  C  k5 |+ [, s) M
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:/ K6 e$ j3 u8 G7 D& r+ a
0 ~/ T0 I7 U) G: l
----------------------------------------
' g0 X6 f& n4 W+ n5 c. Z6 P! W' F# ]8 g" f! O+ X
from faster_whisper import WhisperModel
8 H. J3 q: A% E+ b! ^" @
8 N7 i4 n; B0 r" K* e( Bmodel_size = "small"
- ]/ u4 g, a% X2 V6 m$ J2 s) ]5 J) p( d, B- B( ]
model = WhisperModel(model_size, device="cuda", compute_type="int8")  t2 |. w# u8 g$ g9 W! r8 l: ^
$ P) m' k5 F4 \
segments, info = model.transcribe(* E; p  a/ n: s6 E- l7 @
    sourceFileName, : _% z% o9 ]% J* Z
    beam_size=5,
# U7 [2 d- ], ?# T2 s    language="en", # P' C( d; I: |( g0 F9 B" x
    task="transcribe",
2 D/ t) Y8 @. n+ r; N; _    word_timestamps=True, ) b& x2 M7 N  ]2 l
    initial_prompt = "Hello, welcome to my lecture.")
3 B: n' i4 y+ l  j. Y  `" @1 n, P9 U- x
for segment in segments:: `2 @( ?) p' s  A7 l
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))+ j) q/ N/ P: z/ p* T1 q

( ~5 k5 q+ o; }8 P5 ~* U        for word in segment.words:5 y: o5 c$ T! ^( j: v
               
* C- y% a% }% v  y/ C4 i$ l/ p: o% \" V----------------------------------------% x7 f! U/ U5 N& M8 p) w- ^- m5 a. O

! n0 W) I- S5 X6 ?- `代码说明:1 s% k# `) Q  t4 X
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
+ P6 O( p+ v6 d) b8 S2 y0 h4 }但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。- ~# |4 I3 p  e
2,segment 本身是很粗糙的,做字幕勉强能用。6 j4 m; l+ Y* O) j' p
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。7 _5 [! @# [1 w1 S: M5 N5 r, V9 j
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中! H/ F( \+ O: E7 c1 U
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。4 z, }/ u9 `3 q* x+ ~/ P
5,model.transcribe 中参数说明:
$ D  C# C- R' J1 P1 h你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数6 s; y9 k( d+ y5 o; s3 ^2 m
其中
4 r) p* S0 {8 I/ ]7 ~4 {5 l    word_timestamps=True,
6 p* g  F7 X5 u保证了你能拿到 word,否则是拿不到的4 ^& w# C6 w3 s
    initial_prompt = "Hello, welcome to my lecture.")
" ]. k' O% ?! f. R" E8 K! c保证能尽可能准确的断句 punctuation,但是不是决定性的。# _! M/ D7 ^/ i  p1 K' I: v8 M, E
其他参数可参考源文件:  l  ?& d* A+ Q' l0 T& V
https://github.com/guillaumekln/ ... isper/transcribe.py$ T1 H( O1 ^( t8 Z3 x! C
152 def transcribe(, p4 M# G9 c1 e7 \; m! D& p7 ^8 b- ?
从源文件你可以看到是支持中文的句号断句的。
! q5 C* Y: H" Y/ C/ G2 P0 R8 b- q  Q; p" _8 k
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。% a* y  l1 S7 h$ R5 n4 p
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。$ r: l: B+ l; e7 |1 f6 I
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
/ T5 z6 N1 v% U) e' K$ R! s
3 {7 k; P* d3 q  q1 t% |  _ ( z6 f- Y. j; h  h4 T
, Q0 @- W9 z6 b. z6 a% T$ e, ]3 v

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-3-15 19:45 , Processed in 0.053906 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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