设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
! O* E: K/ y9 }6 M1 \+ g: B2 e( k8 T5 }$ b9 X6 s
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。$ h5 {+ K' A+ I' v
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。; R) S; c$ I1 [" ?; ?5 ~* d( H1 [+ m7 R
----------------------------------------3 E  M$ ?1 {( q4 k
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
! @; j. A$ m8 W6 _+ H在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。3 ~& |1 n: r. u, f0 {4 o
----------------------------------------- D/ `3 ~5 a! k  [" j
https://github.com/guillaumekln/faster-whisper0 d3 D8 z) _! E( u
安装如下:
! _4 q- g3 B& R% a% V* Q1, Windows 10/ t: J$ j, e" O0 V* K
2, Python 3.10.11" C9 y+ I: Y  A& L; s
3, CUDA 12.1! E1 u  X1 t6 y  @$ F! R( A
4, 在python 3 中安装
+ V3 X5 i. t1 ipip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
/ B" f8 ^. W) {( F0 u$ t+ W这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。2 q! z, l, \$ {6 b6 o
5,pip install -U openai-whisper: u, Q9 |+ Y5 |' Z: f
这是向whisper 致敬,可以不装6 R5 N! T( k) E5 |3 n; S1 M
6,pip install faster-whisper
9 }& h& I9 u% q2 F----------------------------------------
. o. H: `  D; P/ O5 S$ Qwhisper 我用的命令行,faster-whisper 我用的是python。; @1 T8 E6 U3 P" H
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
9 Z4 d! v& g( ^' n* m; b+ u9 D& l; f
----------------------------------------
1 c- U- a, q6 B1 X, k- r! G
( E0 z+ ]0 k  F2 E" P$ nfrom faster_whisper import WhisperModel: r8 v& \. E2 U9 B
: t3 [) i2 Z. ^! ?2 ]
model_size = "small"
9 s1 c( A4 k: P3 C1 C) |8 R4 G' z7 w2 _: L& ^( p. S9 k6 E( H, E  n9 L
model = WhisperModel(model_size, device="cuda", compute_type="int8")& q1 o* m, q0 c! i) h' ], U- X
; C$ ^7 B4 [2 c( V
segments, info = model.transcribe(" K0 T4 j& A" H1 w& l. g( H
    sourceFileName, 1 ?/ f" J  v, S% S
    beam_size=5,
# j/ \5 c" _( G$ v. ^8 b    language="en", # {. d' D& G- P$ Y7 S3 J
    task="transcribe", ! c% x; R; ]1 e) w" g
    word_timestamps=True, + X! U( Z* y9 A4 ]( ~* U7 \
    initial_prompt = "Hello, welcome to my lecture.")0 K. \( u+ P+ `* C

1 l: P$ W0 F9 L: ^5 V7 Wfor segment in segments:
: R- ]1 q3 t3 {: U" I  b    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)). B) d& U( I6 u$ j

: h2 ^* ]. F3 S0 t9 k: j+ ~" [1 D        for word in segment.words:
$ L$ i" i; A- r4 J8 E, o7 {6 H: h                2 j% I# j% `3 h6 ^
----------------------------------------
  s; D+ U  M. l2 J& e# G6 j& d- Z' r) @1 P7 g
代码说明:
; {3 F- @, T  H1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
  b$ y$ ]; x( I但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。5 u9 W' F+ {! d, M, A
2,segment 本身是很粗糙的,做字幕勉强能用。- n+ u. n" c5 b2 M) p# P( Q3 U
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
, N* f5 V  f' N+ {9 r) x+ t/ H2 t4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
& C$ A5 r) M6 \比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。6 {! o3 w) l* k1 W( l; d
5,model.transcribe 中参数说明:' j4 J) L/ n  n  Z0 a6 ]
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数8 e3 u  A# j$ R+ E0 ]! J$ v7 |
其中( s: E8 |* ^1 \5 I9 k1 g" n
    word_timestamps=True, % }* x1 z  e# E) g1 }% I
保证了你能拿到 word,否则是拿不到的9 F; W: @/ j' P8 B1 V, N, p. x; I
    initial_prompt = "Hello, welcome to my lecture.")/ L: Z0 P9 f( m. ]$ X1 a# K7 `& ]6 t
保证能尽可能准确的断句 punctuation,但是不是决定性的。
" n7 a' L1 w/ f7 c2 F3 ?& S8 l( R其他参数可参考源文件:
( J8 {# I$ |0 |https://github.com/guillaumekln/ ... isper/transcribe.py
0 n9 O/ r' t6 R2 O  z; c6 K5 O152 def transcribe(* h7 h" F- }1 a2 i
从源文件你可以看到是支持中文的句号断句的。
, A3 u9 ^" q' [" v8 r  y7 u. t
/ p& K! v4 F% y+ O6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。4 A% n5 M- R2 i& T
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。6 ?4 B& f  \* N* H$ }2 N# @
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。+ e! T5 Z: z* W% z

1 H6 R$ L* q3 e7 r
4 P3 w. z9 T8 Q' }, f2 r# @9 K7 c. f! n3 _3 U6 p

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-23 16:18 , Processed in 0.055123 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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