设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 6 c8 H( G: ]5 g: h

0 O( f( n; g5 I借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。4 m- g5 j9 s1 h# A
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。; W% V& t$ R. B3 ]! y8 X
----------------------------------------
$ w7 r0 R. Z- q8 f: N显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
+ V9 t% o. h5 G% n# n. w+ Z在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
# H1 j* B) o8 ]----------------------------------------' ~  Y% A  I# R" N7 }
https://github.com/guillaumekln/faster-whisper- A, s4 Q6 V% T9 V. o
安装如下:) ?3 O* @, {+ L  g& ?, w! r
1, Windows 10
7 V, Q. R+ B, d4 G' v: e) z2, Python 3.10.11, F  U4 k' w% ]! i
3, CUDA 12.1/ N, K( A& [# J/ }6 V, |( D
4, 在python 3 中安装
1 L3 N$ s3 y9 P, @pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
4 o( E$ B+ r; u+ X' L' t" N* p; M6 I这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
' f% N7 X8 x% i7 W2 Z' D5,pip install -U openai-whisper) o4 [! I6 r( o7 i8 m$ @4 s
这是向whisper 致敬,可以不装
( U& w9 ?& Z- t$ l! E' M6,pip install faster-whisper- y' e( ^2 r; Q% G6 L9 j- H" o7 C
----------------------------------------
' R( Z0 O( }1 qwhisper 我用的命令行,faster-whisper 我用的是python。: x. m% a0 L0 ?$ Z
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:" c1 L, U4 B" X1 q- @
% k2 n# i/ j# U( R
----------------------------------------
" J4 _; Z6 h, _0 l
  B+ g' I* [& ~from faster_whisper import WhisperModel
/ k, P, W! o2 q( l, h$ K1 V4 i) r& ]0 Y
model_size = "small"- G/ N3 `! w# K4 ?& O

$ s' g3 b' `& amodel = WhisperModel(model_size, device="cuda", compute_type="int8")) ?) ]1 M8 d! d  r1 w/ S
  U! `. u( e3 h6 o' d& m2 k
segments, info = model.transcribe(
# l% f3 Q8 ?  t    sourceFileName, # z) j7 U& u, n# N+ U+ `
    beam_size=5, + l$ `9 i7 O5 b' c1 _0 |2 d: e
    language="en", + ?/ q. S1 p% j* y9 x& b3 }
    task="transcribe",
" s0 H5 q: `7 \- a+ Y' t* u9 O+ G0 U    word_timestamps=True, # l) t( b5 D! a
    initial_prompt = "Hello, welcome to my lecture.")
) v' |' G- B  n7 y
( l* z9 d( @6 S% l- F. Z4 d% sfor segment in segments:
# u4 G3 Q, F: J! h    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))% t7 c! C! Q) z* G, Y

9 b7 g2 @) F+ V# t; c        for word in segment.words:9 X; {+ W8 y  b  A
                , [" _6 C3 R! I/ m% p) j
----------------------------------------
) ~( z8 j* m- S5 O" b' O+ y" M) U, h/ m# D
代码说明:
1 z/ d* b' P! t# `- k+ C  d" V1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
: W% P( P5 I" ^$ j2 v" c# N/ F但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。" t: N- N5 ~# A5 t9 C
2,segment 本身是很粗糙的,做字幕勉强能用。
% s6 N' z5 D7 @* b* d" |: G+ E- K% i3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
* d5 u& F% e: F2 g$ u2 {4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
, ^% O, Z; x: k% m/ a5 h# {比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。5 w2 {, p$ w, H  u/ ^5 ^- d( v2 `7 a
5,model.transcribe 中参数说明:
4 U' S: g3 J% L: F你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数$ p1 @! w, }' O$ A% H  l1 K
其中5 V1 l0 o0 ]& J4 N
    word_timestamps=True,
, n$ \7 E4 P, V6 @4 }  ]1 A8 |保证了你能拿到 word,否则是拿不到的
2 v6 B% J: d" j    initial_prompt = "Hello, welcome to my lecture.")- _6 t, I1 Z! r$ t2 l
保证能尽可能准确的断句 punctuation,但是不是决定性的。
1 R3 K  b5 z5 _6 u! Q% l7 j其他参数可参考源文件:
8 P2 j+ @5 `: B4 U! G# yhttps://github.com/guillaumekln/ ... isper/transcribe.py
( F& T% I. _! |+ X1 i& W! p152 def transcribe(
: y2 U4 Z( h1 w# ?4 I% x$ @; r从源文件你可以看到是支持中文的句号断句的。; A1 r% o6 P, v2 ~
9 C/ R' a4 o6 X( r. \
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
  Z/ Z! Y, q0 l0 \  A7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。" n6 y  t7 T; I, `) O7 V
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
  ^: }* Q5 e& i& |; |
7 q/ X. t3 a/ k* q3 x
% [+ m  B" _* ?6 i5 t" a* b6 l; z- ]$ g6 I+ v) D

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-7-3 06:26 , Processed in 0.032015 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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