设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
. h8 `. T8 J( c. {1 _; Z5 R: U3 k; s5 R: d2 P  _: N9 s1 z+ j; i
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。2 @( `3 T  J. ~: U' x* j
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
4 W5 ?8 v: {# J+ ^----------------------------------------1 u& r! D! h8 I' \( J
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。& I' m7 R. S! n. t8 i
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。. Z5 G( n. Q  t; A
----------------------------------------7 ~6 n0 I5 ]* ]
https://github.com/guillaumekln/faster-whisper0 d# ^8 i( Q. b1 ]  H( m% I" T4 M
安装如下:
; E: s1 ]9 P5 B1, Windows 10) Q5 z) ]- t; g5 U5 H: i
2, Python 3.10.11
. F+ `6 Y# i; ~3, CUDA 12.1& O1 {% k) T" `, G% C8 m, h  c
4, 在python 3 中安装
0 H- |& s0 X# B$ K1 Hpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117& W- N0 O* ^7 }4 U4 F+ |
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
3 L. J5 A. b, s5,pip install -U openai-whisper
) i7 k' d3 v& i这是向whisper 致敬,可以不装
9 o  H2 f# v, I: `3 P8 r# H6,pip install faster-whisper, U6 U! i* t0 j  x, ^# m- I
----------------------------------------
* W. K7 y. j3 ^/ G) Vwhisper 我用的命令行,faster-whisper 我用的是python。
! N( `- A1 t  M8 \7 z6 P$ w下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:9 E5 Z0 ]3 B7 D3 N
* b8 {" M5 I/ P
----------------------------------------
7 A2 ]( _, v- y% G
+ }; t* t5 _% \& U( V( g) _from faster_whisper import WhisperModel+ y1 a1 ^% W1 C% K2 E, q& a

/ O$ Y% k* \% D* bmodel_size = "small"
5 e# c9 P5 a0 s2 b4 I) v( h( `5 ^% g+ z( d+ I1 g4 a* _1 ~; A
model = WhisperModel(model_size, device="cuda", compute_type="int8")+ f1 t+ S, y; E  v' A! O/ R

/ i" i* \& }5 L3 O0 E$ w6 Osegments, info = model.transcribe(# Q* G( c% b/ }) Z7 v
    sourceFileName, % k3 K5 N) E( j4 x
    beam_size=5,
, X; ?. }6 i% _& W% j, y; V2 B; ^    language="en", ! H- D  z) t+ p7 y
    task="transcribe",
; j# A8 k  ?& M" V2 ~3 v    word_timestamps=True,
3 H1 w/ V2 t- {: B5 i    initial_prompt = "Hello, welcome to my lecture.")
3 n) u1 ]% L- d( E! A! G4 B2 K# p& v, r- z: {% N
for segment in segments:2 R1 }9 Q. f+ T* b) C1 ^
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
$ l; T- _) o$ j" v) X& t8 r+ k" I
        for word in segment.words:; G' r2 u# n0 x. J" F  F
                ) i0 w! U7 {. o9 W7 K. I
----------------------------------------0 q# R9 s% t1 ?. a+ }( F8 x2 m

! S0 W6 M+ y7 t" s5 v' a/ h代码说明:- y7 h% f% {, \
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
8 I( X" }$ k8 A1 ^3 f; I2 x9 H但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
1 x7 H8 S# X4 a$ z  _2,segment 本身是很粗糙的,做字幕勉强能用。5 J2 C. ^9 A: j) p- M7 T
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。) {) F" |' {1 B. [
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
" M& m3 n  g* y: T比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
5 y* {6 Z3 r, y1 a$ S3 J5,model.transcribe 中参数说明:
( {! d- ~/ T/ A; Y6 ~你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数2 J. L0 }+ @1 }/ g  D# _2 q& J
其中* @' E, q  n; d9 P  v9 E4 r. T
    word_timestamps=True, 1 K5 A) _  h- I3 h1 u
保证了你能拿到 word,否则是拿不到的" c( W$ I: |3 }2 g% s* O
    initial_prompt = "Hello, welcome to my lecture.")
& S2 R8 w* x/ _$ G4 H保证能尽可能准确的断句 punctuation,但是不是决定性的。& t$ n& l9 J- x
其他参数可参考源文件:
- S2 w$ M. l4 |' F  zhttps://github.com/guillaumekln/ ... isper/transcribe.py% i4 l" j( a/ Q+ a! r' y9 }9 j' Q/ g
152 def transcribe() }+ ?  }+ x/ c, R
从源文件你可以看到是支持中文的句号断句的。
, }/ k5 W: D9 ?2 h0 l/ U; Y' m$ K# x' z( q
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。. A! w: C  Y8 K8 L/ q! L) ?! h
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
; z  w0 G0 l! t6 q  f1 ]! I8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。; \; s  Z  B& @; f/ U5 e2 f
3 E& o5 ?  X* j6 e; Q+ @

+ h# h- @/ \# n
2 Z+ V3 c$ K6 n

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-3 12:47 , Processed in 0.028911 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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