设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 4 N+ t$ L# `. \. ~9 o; @

. Q1 z# Z8 }% ~/ w# d: z借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
7 u( X1 {+ b. G6 F* v效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。" q( n0 r5 u: N( q- u
----------------------------------------6 y, }  G8 n, P2 H* H
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
4 ^) e' n' T1 a6 X在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。2 n7 K& T9 t# m. B! ]0 s
----------------------------------------
: Q; }0 d, G: h* R6 X& f) d# P& Bhttps://github.com/guillaumekln/faster-whisper
) y4 @) h  e& x安装如下:1 L1 }4 V7 `- q. }! G4 v8 h1 L
1, Windows 10$ d' P$ x( ?" j% K  s, y# q
2, Python 3.10.119 o% Z. F  d3 n% p
3, CUDA 12.1% I  e2 s& V: s( g
4, 在python 3 中安装# L: j; v) i1 X
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
; y1 E( Q: s! h) g& {+ K这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。. p  I5 y, U4 ^' E+ v' w3 S4 O2 a% V
5,pip install -U openai-whisper; ~6 P1 N/ L" `6 ^) h  f) p
这是向whisper 致敬,可以不装
7 M, ]. w/ \" s$ ?( ]6,pip install faster-whisper
! i7 U. w3 F5 \9 j7 x2 W2 [/ J----------------------------------------
/ [+ m+ A: p. ?  F7 e4 Q, Rwhisper 我用的命令行,faster-whisper 我用的是python。$ e. ^. R( m. ]% T" E. M
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
6 M6 g8 K8 U) A1 O$ W0 [* u* a; ^3 I# [& @2 @# t6 ?4 I2 B  F
----------------------------------------
$ p, W" D3 o- X# b* d+ u
" h+ L8 s2 @6 _8 p) Y3 Z3 hfrom faster_whisper import WhisperModel
3 ^- A6 z( k5 b$ M
) @- T: e* j* y  ^+ X$ rmodel_size = "small"
- o  N4 K0 m' z2 f# Q3 H2 m4 U9 O* c3 M" ]/ [7 C+ |! J
model = WhisperModel(model_size, device="cuda", compute_type="int8")
) B! D& h" e/ b$ P) C, o3 N/ e2 A' A! ?/ K
segments, info = model.transcribe(; {6 o2 p9 p5 {0 Q
    sourceFileName,
8 ]2 W7 `, G( q: c    beam_size=5, $ C# H$ i" _9 l- c- l1 ^
    language="en",
) j9 H0 x! K1 _    task="transcribe",
/ f& v7 ~) x7 i- |2 D- y    word_timestamps=True, 9 y9 q8 Z6 v! b) H/ P9 i/ }
    initial_prompt = "Hello, welcome to my lecture.")% ^% r: A/ `) S- d+ g$ {5 @
3 [* A8 c( K4 q% f- i5 g
for segment in segments:  P2 I/ x* K1 O$ l/ ]- m" U( F
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))& z! h' v- F' o

0 E2 o( Z3 c8 M9 S, K6 C        for word in segment.words:
3 l" P9 V. E/ ]( m# C  _                8 z0 N* o$ q' G2 l4 ^9 w. K
----------------------------------------6 Z- H2 ^# p" T* J9 D  w! n" V. o9 U

0 \0 F* J" D5 L8 `& ]4 f代码说明:# l  N( L+ M4 I& B
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
- P+ a# ]  j1 Y但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。7 }7 P* |5 ~, T2 h0 E8 C
2,segment 本身是很粗糙的,做字幕勉强能用。" q, O0 `' S! I' c% q+ O0 o
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。7 |+ T$ l- P% N( i
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中( d7 Z% D) M' j# r9 P7 [8 J
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
* c& q$ Z7 w1 k+ e2 ]# }" e: @5,model.transcribe 中参数说明:
( h$ K# h& D' q( B" T3 F/ F你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数$ t: L9 g$ Y& G% p& {
其中
7 v2 f! y3 q: G, R7 T    word_timestamps=True,
! {3 k. ]& r7 [$ P保证了你能拿到 word,否则是拿不到的
+ _6 o  B+ a0 P! |4 k. T2 l    initial_prompt = "Hello, welcome to my lecture."); M9 Z7 X% r  D  W" M/ W
保证能尽可能准确的断句 punctuation,但是不是决定性的。
: p" l( U- \" Y! ~: A  Q7 E其他参数可参考源文件:
/ x* P) _3 W3 d9 _9 ghttps://github.com/guillaumekln/ ... isper/transcribe.py( e; l$ M& b' g5 g. N& u
152 def transcribe(" b" ~  ~) I3 `
从源文件你可以看到是支持中文的句号断句的。
( ^) {: X3 Y* U/ d% R( E! o, }- I' h9 J% W* D" |5 Y+ T1 b
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
1 D3 X2 M: D0 q0 @7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
( z6 t2 J4 u; i! ~. F, t8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
0 S: c9 U9 Z* b  o. @) O# ^# Q; i# o6 ~7 R# P+ V
& c& G- r7 v( \5 E0 \( j
* h, B' v/ d) w9 T/ ^

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-12-11 14:50 , Processed in 0.031012 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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