设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 + q* n; s7 B2 L! W/ }. h+ ]
  j% Z- W- r" o% M0 ~5 g( K6 T* z
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
. ?! L; u: h$ u, n+ I- S  l效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
' Y; ]1 p8 _8 s. ]$ i8 u3 l  t0 N----------------------------------------
5 E' Z4 J' V: f6 H& E显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
) u2 ?- i% w$ {* x- @8 Y在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
3 j2 J. H  N+ @6 k) d" c----------------------------------------% h3 ^: H4 x" c0 m# e# L4 {
https://github.com/guillaumekln/faster-whisper
. x! @5 G1 v3 p0 j6 K+ W安装如下:
  r' C9 N; a, m8 {' N$ E1 T1, Windows 10
& s" O4 j! q6 G, k8 P4 p( h. R& Q2, Python 3.10.11
  L5 s7 M9 [* {2 Y3, CUDA 12.11 ~* x& T4 V% z; m$ u
4, 在python 3 中安装3 y# M7 ]  J2 U$ L, J/ `
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1178 P; S) i/ I# @6 p3 {" M* b
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。6 F0 N+ w8 d; M- g7 V+ b
5,pip install -U openai-whisper
* g+ ?( _; k* f- S' h, ^" O这是向whisper 致敬,可以不装
* z. H5 B& Z& ~' L6,pip install faster-whisper7 z: Q* }; o: D# j
----------------------------------------
& z: R. H: `2 K' I, L5 d* D2 Hwhisper 我用的命令行,faster-whisper 我用的是python。
' Q+ ~: G4 s& b% [9 e8 m下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
9 |4 {& w3 a2 s% ]" N- {. |) W: K' K; p5 k1 u: O, l, |3 t
----------------------------------------2 K1 E% u+ |! q/ Z1 a& f6 m/ g* N
' m( A' B) R6 w" k
from faster_whisper import WhisperModel
7 P- r, J( L6 X. M4 W
% D8 |7 U1 [$ o" \: ?! Fmodel_size = "small"
; o/ n* a; s0 P: G
# Y+ D0 u6 ^* }model = WhisperModel(model_size, device="cuda", compute_type="int8")7 ?  C* z% A+ `6 o% ]

3 s! I. C. e" C2 g& U* d9 ^4 f7 |3 Msegments, info = model.transcribe(1 X; A& }1 z" [- b, U1 a: r. _( e
    sourceFileName, / p) D" ~- t( `' Q$ O; I
    beam_size=5,
* g% v+ @% S3 C2 [    language="en",
, b8 X9 [" i+ M+ |! S( h0 u' I    task="transcribe",
8 ?" S8 `7 S& P" S    word_timestamps=True,
! p' R' R- k1 v/ m3 Q    initial_prompt = "Hello, welcome to my lecture."): V3 u$ i4 _5 g# d1 }& h% h+ ~3 I

0 W( ^. U6 P/ P6 l4 ^for segment in segments:1 h  o: l' N& }9 s: x( ?' q
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
& K! v# J6 I* @, z4 w0 \. e1 t
3 s& }% Q% j. h' f7 m4 C( D        for word in segment.words:
4 \2 F, w9 F0 {' c# U. B& B                # E- X  O6 s: Z; d) h; G
----------------------------------------  L# u( Q3 [& p+ q! S: P& h# W
0 Q( y- o3 G8 l# t7 `( I* J
代码说明:. H8 O0 i3 n- e- m* z  i
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
% j3 `6 O2 N- j/ F$ O+ }但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。8 u, Y; N+ v: ^7 ~; o  L7 g; c  Z
2,segment 本身是很粗糙的,做字幕勉强能用。9 M: `, o* L' ]& f6 U
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。+ s- U, a. A* c4 t* i) R! x- s" z
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中5 D/ d' X' W' N
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。; N' [9 U' \1 G! z9 X
5,model.transcribe 中参数说明:
, H$ G; n3 L1 d你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
- q6 \' [9 b2 z! p7 s其中
/ b2 ^$ v" I6 X    word_timestamps=True, 3 ]8 ]& u! ~- k/ J/ Y
保证了你能拿到 word,否则是拿不到的. M% d* h2 m$ g* K; |9 l& [
    initial_prompt = "Hello, welcome to my lecture.")
- \) g2 j& F6 @& z7 y5 I保证能尽可能准确的断句 punctuation,但是不是决定性的。
2 X5 o" N2 U# \8 o0 _% @其他参数可参考源文件:
- {  @- C7 ~. B) W7 ^https://github.com/guillaumekln/ ... isper/transcribe.py
8 A' y: `8 [/ }152 def transcribe(! n' ]. k+ z! A+ H) z7 J* c
从源文件你可以看到是支持中文的句号断句的。
) j- g/ \9 X1 R9 M# q$ f7 Q8 X/ a
. Y% {5 N+ M# c% C' a6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。& ]* W8 r- C7 }" |: ?# f# W
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
. |) d2 F! M7 J0 V+ f! K8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。  @3 n' T! i6 c( i* |

  N. c9 T1 F! h( J0 E3 z   H: ?' y9 O8 Q1 L, l

% v( l6 b% s# g; V

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2024-10-26 08:24 , Processed in 0.037821 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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