设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
+ N6 l  M- q4 P) T1 Y
+ F+ ]; M  f0 Y, C借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
( g/ _: M: T) P& E4 l% K  e  _5 C( h效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
1 [6 k7 J1 _4 d0 e----------------------------------------
4 i0 r  U+ ~( S7 P; D显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
1 A$ D3 @0 \: V" J, i在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
# e6 z/ p: w: h" v; j" y----------------------------------------: x" O+ L5 G% b+ x. B) U; q- C
https://github.com/guillaumekln/faster-whisper  A3 [$ p$ ]: u( V
安装如下:
0 Q8 f/ I) Y. _1, Windows 10
! p3 l3 Z% Q6 W' E, V' X4 v0 e, C2, Python 3.10.11# |& ^& `4 c/ {# V. [+ Y
3, CUDA 12.1- U" J2 ^' c) `8 \' R  v& C8 F& T
4, 在python 3 中安装/ @: q1 n) X- M! h- L+ Z' ^, R
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
0 I/ K$ V) R3 O6 |9 `$ u; [2 L这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。0 O( E. k$ L; ?+ v$ R: [3 V
5,pip install -U openai-whisper2 B% v1 A2 ^; l
这是向whisper 致敬,可以不装4 l6 {" e; W0 ?5 _( D  Y
6,pip install faster-whisper
% _5 V$ w- h* U3 O3 |9 j----------------------------------------
: g; I' Q7 Z  F* c* V) Xwhisper 我用的命令行,faster-whisper 我用的是python。4 ]! C3 _4 X6 S
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:4 K9 h/ Q( f3 B6 |0 o" a- Q
+ D9 Z9 l; P$ ?/ m! s& H
----------------------------------------
5 y9 F# G  ~' B" Z3 \  R# J+ Z. O
" C" o/ x; |8 E1 l4 @5 Xfrom faster_whisper import WhisperModel
( Q+ m0 l+ {: a$ s: s# y
" X2 a% ^5 c3 Omodel_size = "small"" [, c9 q: O: Y! x+ f3 r* O# h! |

) h' |2 r" R* S) Q; \model = WhisperModel(model_size, device="cuda", compute_type="int8")
  }* e/ u- Q7 _# T
% `6 }& G$ Q) i8 [segments, info = model.transcribe(0 L' _; p' q4 h' n- a( o7 D% t
    sourceFileName,
- q; ]0 k* K# O$ l  M+ ]1 H    beam_size=5,
6 r- A0 Q9 K& ~- t% _1 W, X    language="en",
% V" E$ L4 _) o7 c    task="transcribe",
! z, T  [' L1 Y    word_timestamps=True,
+ I4 d. {, V7 i$ k* N7 r    initial_prompt = "Hello, welcome to my lecture.")
8 ]! z& _4 A4 W+ q. T
' A; X1 w9 n$ W+ n; n  v) D* q  g0 X& `for segment in segments:, ^( T7 G$ t$ W! n; C
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)), ^" P% y. ?# J/ ^8 i* u, \

$ k% [1 y1 k, C        for word in segment.words:9 b# T9 n/ p, ~6 a* J
               
# \! z& X0 g8 `" r1 O  M----------------------------------------! Y4 j9 D: ^3 T6 A& e4 \$ ^
* V+ I- ~: q' X+ T1 ]; b
代码说明:
. v  U+ @* Y3 w- Y7 w1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。3 ]  t+ v7 Q, w$ M% r( C
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。1 G/ V2 F. U; J. }9 s! i# h5 q! ]
2,segment 本身是很粗糙的,做字幕勉强能用。% A2 A7 q+ b9 k; M( l: J, ]
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。; R4 W% w0 K3 f
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中8 Q$ j5 n5 A. m5 n2 K( @
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。6 T7 k( X1 T. r+ ^
5,model.transcribe 中参数说明:
; f7 i- T+ i* J你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
* |! s2 R% T' c9 D6 p! F7 H其中
* X& o% ]6 c) R2 n$ ?    word_timestamps=True,
; r) K2 p4 l! h+ u保证了你能拿到 word,否则是拿不到的) }6 S3 S. g7 t8 P
    initial_prompt = "Hello, welcome to my lecture.")
- D: g& v& R) `! O$ U保证能尽可能准确的断句 punctuation,但是不是决定性的。
2 W! A/ g: o3 \1 N( K: f2 }% k其他参数可参考源文件:
+ d* K! A  B' Q5 phttps://github.com/guillaumekln/ ... isper/transcribe.py- ^! P. m, x4 P/ v
152 def transcribe(
, s5 w7 s, R" p$ |, q/ z5 Z从源文件你可以看到是支持中文的句号断句的。
% n  H9 i$ w5 g: J' l: \* x  J( e) C
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
2 a5 r  K+ |- R7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。( n2 [4 m" g2 E# w9 ~; P
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
% Q& Y/ Q2 t& D- i5 w2 q+ {. ]- U0 F0 r' E+ S- r
8 E$ g6 b& q; n4 t

' B, x: Z* u/ Q4 z$ }1 y

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-7-11 15:32 , Processed in 0.034082 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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