设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
# y8 q+ t4 Y$ o8 M' p% k3 Z$ X& ?' |
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。8 |2 l) S% p/ s2 M' @
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
5 N. S5 X2 F+ n----------------------------------------
. M- [9 J+ q% p% w. M显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。- o/ v, M& J- ^- [, f; T. C: P
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。6 n2 [0 J. z8 c4 T5 V! W
----------------------------------------
" P: }) D5 F3 }9 ^1 e7 {8 Ohttps://github.com/guillaumekln/faster-whisper
% D2 K4 n4 n( }) W3 ]安装如下:  D( f5 M# G9 [4 }. X/ B
1, Windows 10$ J* _! J- J$ K( K8 b
2, Python 3.10.11# H1 M$ `% a" ^
3, CUDA 12.12 e+ T# o7 E3 r# E( j! `& \) n+ G
4, 在python 3 中安装  a* x- S1 Q: L. j: t
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
8 m% m: a5 I2 U4 V# }这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
, y' _' X' S9 G# O5,pip install -U openai-whisper) @& l0 A& P1 F& t4 i% d
这是向whisper 致敬,可以不装- o) U% `( u0 H
6,pip install faster-whisper" B; Z$ q7 q9 x
----------------------------------------& m! d* D8 T/ Z- H4 f( m1 T* b
whisper 我用的命令行,faster-whisper 我用的是python。" `( ?. Y; l2 `* v3 \% G$ ~2 v
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
  m* c; f$ ~" w, s$ R
7 h+ L/ n0 M2 W( A  U4 V----------------------------------------8 Z" F) ]9 V$ E8 \0 P: b4 V
0 K2 p/ L- H8 D( C4 F* `- {
from faster_whisper import WhisperModel0 @" f) e; V1 J0 q) {, K

% p9 _/ Z  k6 G" Nmodel_size = "small"
$ W$ l. Q3 }. o
$ x5 [5 s% S4 z7 _2 l+ Hmodel = WhisperModel(model_size, device="cuda", compute_type="int8")8 w3 s2 B! U* b2 k3 r
7 r. V+ r/ U5 V& f. v7 B8 x
segments, info = model.transcribe(. @. x$ X& P" p/ [# ?
    sourceFileName, # B7 E- s$ A- J( S( d
    beam_size=5,
6 U. E- T# E' s. I9 ~2 R/ X    language="en",
  h9 E+ D- P/ }2 o    task="transcribe", 4 @+ U( p+ C6 `1 F" }+ m8 O
    word_timestamps=True, ) E) D% C( b9 l( x, a3 W
    initial_prompt = "Hello, welcome to my lecture.")
6 O7 c! k% ]: i$ w. x+ ], \; r6 k& u' Z
for segment in segments:/ v7 f+ B; x1 }) ?7 W- I2 I
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
3 Z7 M5 j3 S  V. m; n
' V# K9 ^2 Z  d. V        for word in segment.words:# p8 b2 X! r* M0 ?
                " r2 z- b; b! w# }, w! V( o
----------------------------------------
0 r5 ^8 T( v6 w" K! U2 c6 ?9 E; M0 @9 Q2 i$ h
代码说明:( o5 S* u: j+ S( S1 x; }
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
- N0 q' p8 Q. k. b. R! K+ L( ~& s但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
- w/ C+ n9 c( D9 x: C2,segment 本身是很粗糙的,做字幕勉强能用。
' X5 Y! o4 P% L8 r8 L5 ~- K3 T/ K3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。2 g7 B7 r$ ?3 m  \1 ]" Y/ ?
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
# [; }3 [) R  j" w) Y比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
9 f* R; n: P, b. r2 e5,model.transcribe 中参数说明:
8 `; P; ^$ W' d# O& u, Q  m你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数% y& O  v3 r3 P* `2 R; x/ B
其中: r2 q4 p! O- E% |5 L& ]5 i, R
    word_timestamps=True,
' A1 }( n8 S/ {. R. o- M9 X% K; a5 W保证了你能拿到 word,否则是拿不到的, {5 F- P1 u7 u: a# Q  E
    initial_prompt = "Hello, welcome to my lecture."); Y7 z$ i7 I% s2 q4 y
保证能尽可能准确的断句 punctuation,但是不是决定性的。1 Q. J! A, `6 I/ T
其他参数可参考源文件:
7 K7 Q  e7 [6 shttps://github.com/guillaumekln/ ... isper/transcribe.py3 ^% Q7 s- f3 G  u$ W
152 def transcribe(# ~0 q* U* a. b8 J0 |
从源文件你可以看到是支持中文的句号断句的。
& B5 v# n' f: I* p; a6 h
: h% I9 G1 ]5 l% j; Q6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。0 x; ~# W* s" U" O1 l; Y6 ^
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。7 ~0 ^  c7 `' Q7 T7 Q3 c" j! r; Y3 s
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
( x- L8 K& x& b. u  H
* m' n! [- P9 T6 ~( |  q) l
0 G. c' I; {% y+ C& p3 Y% n  |) G

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-12-28 22:45 , Processed in 0.027608 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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