设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 # u* X5 {/ A; ^9 H9 g- O

# ~0 R& u& }8 T, }  w& `; x借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。7 `( c) I9 l4 i3 y) z
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。7 K! w) E- Z: E4 n2 i
----------------------------------------8 d; Q1 Y7 t$ ?1 G, S) I: J
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
$ k% x1 [$ _$ I+ \1 |3 y) z4 m在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
( s& C! b( V# j0 s# Z----------------------------------------
1 [7 N# c; n" `  ^# g/ dhttps://github.com/guillaumekln/faster-whisper
6 T7 l" m. g) t8 q- @- V# `4 `安装如下:8 @) F4 c  b6 S
1, Windows 104 ^. ^) i9 Y4 F7 j
2, Python 3.10.11
+ U) p. M! O- y" k3, CUDA 12.19 a5 w. _9 V! G$ m" t" _
4, 在python 3 中安装
) O- c, U& Z8 Ipip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
+ k( s: [- ~: E; y$ w' k. v这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。8 A8 b7 N4 j+ B$ x/ O
5,pip install -U openai-whisper
: t, ^2 z( k% i& N这是向whisper 致敬,可以不装! f, R+ m; E) A' j2 \
6,pip install faster-whisper, E* y8 c) D( T  b0 m
----------------------------------------
$ ], i; v3 f( P; N# T- d6 `8 [+ lwhisper 我用的命令行,faster-whisper 我用的是python。
4 m2 T. H4 g# S5 }% j1 [5 a下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:: A# s( w+ b2 t
" Q4 V& w$ X5 ~2 z
----------------------------------------
/ Q5 y( l( c- t* n0 [& l6 ?
+ _. ?2 z6 |( k5 ]. _9 X5 D/ H. Efrom faster_whisper import WhisperModel! S, l0 q. S( _- g0 J9 A3 C
/ u( t% {, e' J; Q( Z' i" a
model_size = "small"
& Q/ ]0 R9 J4 K* N6 e1 ^9 w
, I" s+ ~: R9 U2 |model = WhisperModel(model_size, device="cuda", compute_type="int8")
7 V- c* C* R( t- W, ~9 e
' K+ w$ x7 W0 O) ^" N9 I& E. xsegments, info = model.transcribe(" J! g; d0 m8 v) G6 k3 j
    sourceFileName, # l: T; p$ k: j$ T4 m+ h- `
    beam_size=5, ; p, R& y3 d, F5 b  O2 P2 Z
    language="en",
% K5 H4 j- Y' U" M: ~    task="transcribe",
- x7 n6 q; p+ U# D    word_timestamps=True,
* A: t  I# F& @0 X/ ]    initial_prompt = "Hello, welcome to my lecture.")" v6 C4 @! _/ r8 h* D: v- _
& z  J0 o' O" V! F" ?
for segment in segments:  _) n. s: n- \# I. _) E- L
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))" ~5 c  s* @+ P& T* b3 ]! F& h

6 U, X4 `2 l# v- W8 R        for word in segment.words:- l0 ^1 O/ W' P9 F. |
               
, Q7 U! W. P3 I6 U9 j. N6 {----------------------------------------. j2 C! m1 {$ {# ^! O9 W

2 Q( I# s1 _" \7 w, Y& d代码说明:+ ^% ~) @$ B6 t) {4 G7 W5 D
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。+ P8 O& ]0 \. s' C; _
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
- w9 J! B7 e3 Q- o2,segment 本身是很粗糙的,做字幕勉强能用。
- S  \2 i8 x5 v: y1 n! L3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。3 r" Z0 R9 @" _3 `) B7 Z
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中3 \6 z: |3 J( n- }( F+ f5 Q
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
/ b; C1 N9 |0 t% L, G& m5,model.transcribe 中参数说明:
8 P* v( G$ w( m: }. x. i- S你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
1 e7 C  o- [% B+ {8 [$ M+ V( [其中) l- d2 H- s! {, ?4 g, T
    word_timestamps=True, * Q7 W$ a2 k. Q% ~* p" Z' V3 d
保证了你能拿到 word,否则是拿不到的; i# v- h1 E5 N" E& h6 ^2 u
    initial_prompt = "Hello, welcome to my lecture.")1 v. b0 E3 v: |3 y
保证能尽可能准确的断句 punctuation,但是不是决定性的。
' }! f  x' a9 i& m# K其他参数可参考源文件:
4 z- L$ z: k" k# K) W4 Jhttps://github.com/guillaumekln/ ... isper/transcribe.py+ \/ |2 V$ G- D1 Y4 W1 M7 t
152 def transcribe(3 z* K1 M0 P* @
从源文件你可以看到是支持中文的句号断句的。2 q( |% |  M2 t. d

3 V0 U6 W7 S2 s' {, K6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。2 H) _+ X  B, K
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
4 [  h) B, p7 u/ x8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
, i- _' T" _, K! {% ~- `5 |& ]3 z
! B6 C/ r) y0 }9 ^
1 m" e% S7 o: s! Q2 d" Y- O5 ^2 x

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-16 11:35 , Processed in 0.032878 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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