设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 0 i5 T1 ], M6 x2 p

1 f$ _9 ~3 o$ V, \: N$ X借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
8 j: o0 v* O% x# t$ y- K+ L效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
5 ~; c( y# W  Z3 c----------------------------------------& x7 ^9 f5 Y  b  x/ r. X
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
1 G$ w. X5 O; E. H* q. A9 j) \在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
7 x( p5 K1 o- z6 Y+ a( S----------------------------------------
( K9 B/ `) j9 i) ]# Thttps://github.com/guillaumekln/faster-whisper# I7 ^. P9 O& x+ q
安装如下:
( ?6 u9 V# l+ _3 ^% N" a& \1, Windows 105 r3 J1 W& T" W& o# c
2, Python 3.10.11
, M$ [) c% ?* F) A, o3, CUDA 12.1
% b- J) D+ g" q  G. z9 }4, 在python 3 中安装
" o* V3 ]8 r+ v& O+ {2 U" h  Fpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
" X& M7 V: t8 x这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。2 b9 |  F! ?) r+ L
5,pip install -U openai-whisper4 ?) V# ]; N! B5 ?9 w
这是向whisper 致敬,可以不装4 F. E3 ~; i  T
6,pip install faster-whisper6 R3 g0 }4 T& `) p
----------------------------------------
  Z; C. G; J3 Q7 X8 m; S6 H6 }0 uwhisper 我用的命令行,faster-whisper 我用的是python。
0 f: f- f* h' N0 k. `; }下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:1 N3 t/ J- ~$ c& k
+ o% ~# T8 S$ q8 {3 S) v0 {* c& V
----------------------------------------
' E+ [% H% Y2 o5 B2 u' N& t# z- F( R- A" c
from faster_whisper import WhisperModel
& X7 _5 z/ S  i; V9 m* A2 m9 _: h5 N) g2 ]" F9 x
model_size = "small"
# ~7 J) V5 O, c
; s- y9 F+ h7 L' |+ |, o. Xmodel = WhisperModel(model_size, device="cuda", compute_type="int8")  p4 d( x; c- E

% J1 u9 o  h# H0 x; u" msegments, info = model.transcribe(
5 a% A- h9 U5 W. A    sourceFileName,
5 z6 q/ K5 V$ o1 d    beam_size=5,
* H6 e) Z$ G' H4 A$ X) ]    language="en",
0 e) q5 \; Z6 S% d; H" ~3 ~    task="transcribe",
( I& {7 k: i( F+ [) D& m1 V9 y    word_timestamps=True,
; c  h- g7 u% v! y    initial_prompt = "Hello, welcome to my lecture.")6 I3 P4 R# J" n* V

, k) P( {3 ^4 L, u! V0 }( I2 Qfor segment in segments:* i! K5 ^" h/ H0 I4 s6 [
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
6 a/ W2 l. F) g% t+ ]/ n& }% ^
1 \7 r3 c0 z! b( k( i        for word in segment.words:0 [0 C. X: H# |- [( {  N4 e
               
, h) H: j" l& r  B7 ]----------------------------------------
) u7 Y% ^1 g( N$ X' U( r2 ?
  Z( Q' U3 l! t( X3 R& H" q) ~代码说明:1 W: B! _; _5 n
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。3 ?; {2 j9 Y$ Y6 f2 V. v  }
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
8 Y! ~# X7 i' m1 X& _+ Q7 M2,segment 本身是很粗糙的,做字幕勉强能用。! z/ G8 K" r1 p: Q  ?7 U
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
, ^  X- P% G9 D- N- }+ x7 G( u$ Y4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中& {/ y9 o! X; v3 }1 M/ e% ?
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
; Z/ s: `  K3 q% h  C3 d5,model.transcribe 中参数说明:
9 [( M! G# H4 O) t* u* c你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
; k/ m2 ?3 i# {其中& G+ K6 E5 s8 f8 P+ @# l! p4 p
    word_timestamps=True,
: t0 a5 S  z/ X1 p保证了你能拿到 word,否则是拿不到的; _! X: [' L: J& h- n5 u2 R( x/ ?
    initial_prompt = "Hello, welcome to my lecture.")) n2 f1 F1 i( L" u
保证能尽可能准确的断句 punctuation,但是不是决定性的。. v, d6 H8 a3 m1 c
其他参数可参考源文件:; ^3 ^& i( _) @/ J
https://github.com/guillaumekln/ ... isper/transcribe.py
5 V% b4 ~3 [" t7 S. e6 A" z152 def transcribe(
( e6 a' C0 T* M) V  `# |从源文件你可以看到是支持中文的句号断句的。$ ^$ E/ U) [; C# V( ?
% H% M) N) S/ g( {  p- A7 k+ B
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
- _2 |0 G' c5 B" x& b' z: k7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
4 K1 y; }* d7 Y$ a* O' V8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
5 n3 t6 ~& X- k; _. J7 @( p0 `
$ f3 d# S& E/ F" \2 h 2 V* l" N. z& {' }& R- M' }. j2 \7 B
% m0 S5 W% n4 i) P$ O8 l) g

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-7-1 07:36 , Processed in 0.033575 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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