设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ! B' X1 P3 s3 M! s; Z, ^- S

! N( x8 u- q0 ^# i借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
1 R5 M5 ]4 Q) r$ d. Q效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
& N- ?+ H3 U$ e; d9 n----------------------------------------7 `& X# _8 Z( s/ f2 _% ^
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
: s- n- w% j- K2 b, [- O  \在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
; g/ M; r- ~5 r----------------------------------------$ s( a5 _& B2 y% F9 X' Y
https://github.com/guillaumekln/faster-whisper
: t; j! w+ ~: F) Q, e1 u# d2 L- s% j8 ^安装如下:
2 T* m6 D; ]8 l6 P8 }" u1, Windows 101 }' K& @6 h! S* A+ L
2, Python 3.10.11
3 X; R1 n* `! ]* u7 C3, CUDA 12.11 {  S% w; E- A6 g
4, 在python 3 中安装
2 p+ l6 {8 g; [( gpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117: F; R; s' a, Y; Y( }7 W
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
, w8 `3 E& s1 B) m; X$ _5,pip install -U openai-whisper
; A( F& R: H" _& A; c: E# y- }这是向whisper 致敬,可以不装8 X, o) l5 a% M0 I, J% Y
6,pip install faster-whisper
* [5 P6 \# F9 y  m; P! t----------------------------------------6 }0 `; F5 K4 E! z! _
whisper 我用的命令行,faster-whisper 我用的是python。+ d; {5 `: {% _( e; f0 @
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:2 r5 o. L& l+ l, T7 n$ j
0 B# A/ g% `" R! b, x
----------------------------------------
; w8 f9 }$ W  k) b* q, P; C8 s
: \# w" h. o9 n" U4 ^' U) Z* Kfrom faster_whisper import WhisperModel7 i) i  E( m8 i  Z& j0 g

' S7 V  I$ m3 d' J3 Tmodel_size = "small"
" y0 i9 c! p5 k
6 m: |& F3 q, z8 s4 Q) M2 _model = WhisperModel(model_size, device="cuda", compute_type="int8")
( x8 e8 R! z, V
. M2 R+ Y. i) `  N! b2 ]4 Fsegments, info = model.transcribe(& F, ]' g7 _- ~4 `0 U% `
    sourceFileName,
# N+ }  y: g6 j5 q1 ]    beam_size=5, 9 `0 [; g) v: d8 p2 |
    language="en",
* C; l# T6 d+ r/ U8 f: k    task="transcribe",
! U: ^% d' a; C0 b' l    word_timestamps=True, ' U  Z- u! f; z7 M
    initial_prompt = "Hello, welcome to my lecture.")* D) a' k) V. K( {! Y6 e
1 i- s$ i- I5 n  {$ S! b
for segment in segments:% `$ n1 C; ^/ J8 y4 t7 m7 X4 q
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))$ e+ r2 T1 s/ t- l

1 y) N4 b" U& I, L2 n$ V        for word in segment.words:
/ l, x* V3 I+ [8 C               
3 t3 y7 a# \/ I. ~----------------------------------------0 D" `" x+ T; n
4 @* u- ]6 T6 Z5 k9 Y
代码说明:" [/ J& p- G) L* A
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
9 @5 u  D& {7 J( L4 w% z- D& w但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。# }8 v/ A/ i  Y# h. u
2,segment 本身是很粗糙的,做字幕勉强能用。
0 x$ g& w7 j2 `' b5 e9 y5 O  `9 h3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
. }( C3 T+ n4 C, E4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
3 x6 T. P. y; d  R% H, J2 H$ ]比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。7 f' F5 Q& k- H
5,model.transcribe 中参数说明:
3 M6 T- A& D! H6 \# S5 F你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
' z  a/ E- F6 i, {( M. c其中
) @( Z4 t6 H$ @1 [; [6 d+ t# X5 C    word_timestamps=True, $ @* w" U; O5 w
保证了你能拿到 word,否则是拿不到的) Z) v: e. E; ?+ T" w
    initial_prompt = "Hello, welcome to my lecture.")' |  H* y3 d7 C% G
保证能尽可能准确的断句 punctuation,但是不是决定性的。! B, r% E5 Y3 x, S' i
其他参数可参考源文件:/ ~+ N9 c# X; u& M
https://github.com/guillaumekln/ ... isper/transcribe.py
4 \; G2 [! L* ~$ F2 B% |152 def transcribe(
  X2 I  }: t+ o7 Q6 N从源文件你可以看到是支持中文的句号断句的。* Q( B- e7 f, Q3 V2 \, x
3 y! p, w9 a- ~7 W) f
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
" ^( h2 Q# ]( i9 {2 v1 g7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
* T( E1 N. p! n# ?' h, |+ X8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
9 @4 l, {( l1 n) T, h
* N1 k' \! K% {7 Z0 i4 v
% q* ?5 l* J2 T# P& v4 G& v. b
8 l2 ^7 d) z" _" l

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-7-31 04:35 , Processed in 0.057404 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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