设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
* U, K0 K( e( e( ~
; z. Q4 m0 I, B) c$ T6 y( Y' a借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
" Z& ~* r1 w. ]5 U7 C( k效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
, t& n# Y9 S0 V* ]3 V# R----------------------------------------/ |1 |4 }0 l3 }) I* d/ o
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
! j3 \! H' I1 L. f6 J在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
( _" e4 e7 D, R3 O6 }2 n----------------------------------------
  R  u$ L$ v7 A& e$ Ghttps://github.com/guillaumekln/faster-whisper
; q3 G1 A, ], z0 n: d2 O; m3 z安装如下:, |4 k* r" |* B/ ~
1, Windows 10
  ^3 o9 S$ @$ _" R0 i/ k; ?4 O2, Python 3.10.11) B- ^# z5 n0 T: r; d
3, CUDA 12.1
, o' z/ n6 c) ]- M( C. x/ o+ p4, 在python 3 中安装7 r. [# o9 ]$ P7 m" l
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117# G$ j/ Y- u" H7 u
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
/ @4 [/ h- m  J; v9 E5,pip install -U openai-whisper
" C7 Y$ w  u2 H3 Q$ W  K4 m这是向whisper 致敬,可以不装
8 X0 x$ B9 C0 H, d# m" Z6,pip install faster-whisper
# f  z+ M+ i: t2 n# ?/ t* H----------------------------------------6 {* B+ q, l9 F# @, H4 E
whisper 我用的命令行,faster-whisper 我用的是python。7 X7 m5 J8 P  t( n
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:4 u5 K* ~" ?9 [8 \  l+ `

* o# K( @/ \3 e* m. p----------------------------------------
& V3 i. L  l( k$ B0 T4 E: a/ b$ H# _' H8 `) I- E
from faster_whisper import WhisperModel
  L8 a! F' L6 R: Q5 d4 ]( e+ |1 G8 {9 ~7 ]
model_size = "small"- A" ~- U! ~9 z7 r  V3 [
6 Z% w3 `% v4 E  {: q
model = WhisperModel(model_size, device="cuda", compute_type="int8")
2 C, L2 j7 y% [( H% f: f% U
# c8 Q- k/ Q/ l8 ~8 |segments, info = model.transcribe(
+ z8 Z$ z6 g2 g6 C6 K. T* C    sourceFileName,
8 o: ?' U3 o2 X8 U, K- B    beam_size=5, / C( B  ?" p+ |0 I+ x
    language="en",
! u1 V; |" [& s1 M  [6 \& Z    task="transcribe",
8 Y* D/ l, o# R  Q/ l+ B7 W% c0 R    word_timestamps=True,
9 R$ c8 s9 q6 \+ `' b% r$ B. }/ x    initial_prompt = "Hello, welcome to my lecture.")
; A1 b1 C2 |7 J" e" j1 e* F/ E$ Q' A  f% W  e
for segment in segments:: n2 h) W/ B! `: v. q3 v
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
; ]: r8 J) g0 a
5 _$ @4 k* B$ ?, m7 q8 Y& U2 f4 O% y        for word in segment.words:
8 b7 E, R0 h7 v4 o0 C3 O               
9 `( ^# y$ F$ R----------------------------------------
1 H3 {" B' \: J, k6 y
. R6 z" I+ t0 X1 q代码说明:
) H& M" i1 H* C+ g" E7 s1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
( p( n4 d3 ]. e但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
# u$ i  _: X( u) K+ k2 X2,segment 本身是很粗糙的,做字幕勉强能用。+ D( @2 i# ~+ N$ g7 X6 t2 j
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
' O8 C* l& h/ c+ x6 e+ ]4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中4 V; o7 t5 j. N! f* d
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。; I# A4 ]3 L" h) [- {  c
5,model.transcribe 中参数说明:6 a% U+ ?( p' F# d5 ~, v
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
% P9 {9 J; k4 c2 ]9 C+ |其中9 I  o( o& D7 K; W
    word_timestamps=True, 7 K- U, T3 M$ Y( }5 Z
保证了你能拿到 word,否则是拿不到的
* p2 L/ Z. P% e    initial_prompt = "Hello, welcome to my lecture.")
0 ^, c( _4 Q2 \保证能尽可能准确的断句 punctuation,但是不是决定性的。
. }( `1 A/ u  x9 X0 p" T% b; \0 d1 `其他参数可参考源文件:! D$ b9 n3 ^$ ]# R( V/ ?5 B  j
https://github.com/guillaumekln/ ... isper/transcribe.py+ W2 d  ^9 r# e4 i* ~1 d% ?5 B
152 def transcribe(/ [) T+ f1 L1 L0 Z8 E( F
从源文件你可以看到是支持中文的句号断句的。
# n% S$ l" J2 e" ~' \: _8 Q- p* r; f4 _
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
1 L9 U; P) @7 C) e1 m$ a7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。% X; p6 w! h% |8 v# }
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。- V. \, u& Q0 M$ c! H2 L/ r
" S$ i) E4 L0 Q; p* p  x
9 E- \) G' G& \. J

) S& \( t  E" e/ g/ f

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-29 20:27 , Processed in 0.062496 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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