设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 / U+ O( \& V/ B
( e/ q; V- T  h. j% p
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
) _7 {5 H, G0 J/ z  G  h9 b效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
( s% b/ I" M4 A- ?% `" r----------------------------------------
3 d! t& n0 u: n7 H, n/ d4 d显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。- G0 B! r( g2 `. b. w
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。( H4 ~7 ?* R2 v9 o5 v
----------------------------------------
6 |% n, R! F2 K# f$ h/ x* Jhttps://github.com/guillaumekln/faster-whisper0 B6 `, V2 Q4 U* I( v; N
安装如下:* [2 a7 _$ Y& d( G% t
1, Windows 10! O+ A9 E6 K2 l0 \6 `# X$ G
2, Python 3.10.115 v, ^. G) l- P$ {4 u0 t" _7 ?: l
3, CUDA 12.1
1 V/ w  [7 e/ u4, 在python 3 中安装1 A7 h/ N1 }' A# c
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117/ j6 {/ X5 S7 t
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。# j5 v1 E) c( T; e. _
5,pip install -U openai-whisper
3 I6 i# V; w+ }1 v8 v. t' t这是向whisper 致敬,可以不装2 n& o/ R1 V6 h! t$ s- C
6,pip install faster-whisper5 m  _6 u- S+ J. C! D& `& b
----------------------------------------
& p  B# G" y7 b7 zwhisper 我用的命令行,faster-whisper 我用的是python。% ]8 D. `9 ]' b) _: [+ v
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:! `* }3 z) q  j6 w( b' p$ M; m* S

5 z! E+ i9 F0 c0 ]! _----------------------------------------
' ?! x+ _9 A0 o) P  F5 E1 }; l7 f8 M. n+ k1 B+ [
from faster_whisper import WhisperModel
) f0 F: V3 }, h, x" H4 x. D5 k
3 }: Y' H0 _3 D* p2 qmodel_size = "small"
1 D. ]5 [3 e8 L5 O
4 ?; y5 ]) v: w( u  C' O* Zmodel = WhisperModel(model_size, device="cuda", compute_type="int8")' I8 C# W- p2 x1 {+ V( x1 c# v
- X2 W6 C/ C0 b$ k' D% L6 v& t
segments, info = model.transcribe(6 z7 h: l9 z/ A  ~
    sourceFileName,
2 w+ z% J! @- D' f  R    beam_size=5,
) P5 B1 V9 R9 @2 I  _$ y, G    language="en", " M# A3 @1 X/ ]& v6 {1 M1 @+ a
    task="transcribe",
2 j, v) R4 y% C# v. w/ @' k    word_timestamps=True, ' s2 [/ b' T+ H6 J* d9 E. X
    initial_prompt = "Hello, welcome to my lecture.")0 ?; t, E0 b' _7 r
: {' g0 k0 b/ F$ }$ J- r+ \) [9 Q
for segment in segments:* e4 {: d  A) h2 H4 j# w# O' G
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
8 U; V. `. ?6 V1 J7 @2 r5 t( l$ X! z0 n* m$ R
        for word in segment.words:) T! D' S$ b7 E' B) J  t" S6 Q
               
' B) n8 o  _# Q0 i, L----------------------------------------. e, O$ U) F" p
# l, K$ {" h2 C9 {
代码说明:6 N, i- P6 @4 R0 ~
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。2 Y* G& r2 ^- w% n
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
8 {0 M/ [+ r: M2,segment 本身是很粗糙的,做字幕勉强能用。
! v) c# a: `7 Z& f. Z3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。& ?0 X# g# V5 I1 u: t# F
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
( J& K. s/ P; G9 X0 j1 I比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
5 ~# X7 R3 e8 n5 c+ O" _5,model.transcribe 中参数说明:+ @5 f2 k6 g4 W) V  K( Z7 w' g
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
- y, E$ h9 e% G" `8 |其中% D( i# b! u0 v
    word_timestamps=True,
  P9 D* M  n4 X- h4 Q保证了你能拿到 word,否则是拿不到的1 l2 d  Q8 w# d: _4 h* O3 L" h
    initial_prompt = "Hello, welcome to my lecture.")
: M" r3 J- w+ k. S7 O3 w5 o6 u2 r2 t保证能尽可能准确的断句 punctuation,但是不是决定性的。) E" k/ U/ M( ~( x5 c4 [% z
其他参数可参考源文件:
6 Q! p; y/ J# ?9 ~/ C0 Rhttps://github.com/guillaumekln/ ... isper/transcribe.py
1 U! L/ ?9 \6 O' U% H, h5 i" U7 y6 Q152 def transcribe(% a( {, T9 q  C' |5 j4 a6 y! l
从源文件你可以看到是支持中文的句号断句的。
9 u" d% f, B5 Y% c/ q
) Q& O  P* X) F6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
, R- s* F) t4 [" K7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
+ h5 f1 c) x) ~( j8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
% L0 k0 i% }0 @9 F, k/ E) {; x7 u, L8 ?9 b2 ]& }
+ L( V7 O9 W2 K) R
& i  i' P5 g4 k0 @, O* k+ `

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2024-5-1 22:20 , Processed in 0.032801 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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