设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 : Y7 o) u8 u+ Q/ x2 }0 Y- }
+ o. l2 I  B3 H. ?; f& ^- h+ S
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。2 k+ w1 [5 O4 s4 z6 I+ O
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。/ E' N. E0 @8 e2 w
----------------------------------------* _) m# G, g( p+ z1 ?
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
: y4 X  M3 s' k! N+ f4 O在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。' o2 j3 \/ L: k$ }
----------------------------------------, Q" _1 @6 w% N+ S% b! N/ L
https://github.com/guillaumekln/faster-whisper' O+ s0 @, S; @
安装如下:4 E" |, d3 i( L5 {2 n' c; |
1, Windows 10
) d/ ?; Q0 p1 P# f/ e' m2, Python 3.10.11
: z1 l- b! V2 O! ~( k5 C4 J; Z8 s% o3, CUDA 12.1+ o9 h/ B! Y* Y6 [
4, 在python 3 中安装
2 A  u8 C) [, n/ @9 l* _* Xpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117# _' R! K9 A! x  _$ T
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。  X5 k% t+ S4 C2 _3 [- P
5,pip install -U openai-whisper2 o- L: J; x8 T/ s, C+ X
这是向whisper 致敬,可以不装9 ]% W/ W- V4 a& ^1 r
6,pip install faster-whisper
$ H$ z, e& z& Z# @----------------------------------------
* B0 [2 }: c! h; A- d; owhisper 我用的命令行,faster-whisper 我用的是python。; G/ B- C5 A8 j( v0 n
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:- ]2 T+ \: M; R' p! |

" x! q0 W' v8 V( w# w; n( \----------------------------------------; f3 [9 U" o8 |& K

, F0 E+ u) _& Vfrom faster_whisper import WhisperModel
. z1 O5 O. ~1 e' F
  m# v$ r, x! ?+ g$ Hmodel_size = "small"
; `# f  P* I$ f9 W( ~+ S9 @4 t+ n# b5 M* I- ^, a; R
model = WhisperModel(model_size, device="cuda", compute_type="int8")
& x: g( w( T& ~' y3 t4 i9 h. D' _% x5 |, V* s* `) ~. V# V
segments, info = model.transcribe(
$ a$ f2 x# Q8 P+ m' R% q    sourceFileName, $ G1 f# ?) @2 Y3 c$ ?, u
    beam_size=5,
3 M$ x" B2 U  {: ]) H- ]) D    language="en", & `) m+ p2 A2 \2 O2 J, ~- v
    task="transcribe",
" u& z- }: W% f1 {) b    word_timestamps=True,
/ ?4 ^3 x7 o! {6 s; Q    initial_prompt = "Hello, welcome to my lecture."). \) j2 P* a/ F' P& |% `$ t% \

  }/ P. |" d8 wfor segment in segments:$ b- l# E8 c0 q% \2 L/ W/ [
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)): _# p8 L1 {" _6 }" C3 d: S

8 R$ L1 D" k) G, X9 ^6 d        for word in segment.words:
* t2 B8 u' i6 R& ]0 D$ k                & Q5 q2 P0 C0 N, l3 M' d5 h
----------------------------------------* v/ p& a. n. K9 K  B6 G" j
% L) N1 l! t' v! b7 U; ]
代码说明:
& v) _5 a# g' ]2 m4 W2 p+ b1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
  [( b) O1 n* K  C7 U7 p- w3 n6 Y6 x但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。8 r+ F$ y( @* R) Q3 v- @
2,segment 本身是很粗糙的,做字幕勉强能用。$ X; _! z! Y; C) k/ w8 r$ [
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
5 X* W/ ~) y/ \4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中- P. n; a9 T  q: P
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
+ A  u( Q7 T+ n( {8 Q; V! w5 R" p; Q5,model.transcribe 中参数说明:
& k" P# p3 k& t你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
) v# s) K5 Q5 c其中6 ?" ]; A& K* ~/ z$ [9 {
    word_timestamps=True, 1 p& d: A; p% ]3 ~2 K$ f
保证了你能拿到 word,否则是拿不到的
& G% |6 G. h' A- t4 t5 g6 z# G- I    initial_prompt = "Hello, welcome to my lecture.")- v- I, l$ I' M" w7 n0 K
保证能尽可能准确的断句 punctuation,但是不是决定性的。
' d& U  n  F6 G4 v  Q4 Z8 k5 H其他参数可参考源文件:
5 {$ u; Q% Q7 C7 b8 o4 jhttps://github.com/guillaumekln/ ... isper/transcribe.py( r' s* d9 @2 i" w( ?
152 def transcribe(5 B; [$ }) ~1 O
从源文件你可以看到是支持中文的句号断句的。. [; @9 S: @+ u& J
5 |- Z$ ]4 R' h
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。1 d* |5 M6 m- y- ~9 y! p: {
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
: ?7 W1 t6 B& Z' f( d7 p8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。& A& g1 z4 f3 T% C6 ?; Q

# c9 ?5 b8 \& @# s( |, O) R" _ * L8 U& }$ B  n
$ C7 z* r* I% S# c5 k9 T8 o

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-22 08:40 , Processed in 0.059069 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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