设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 , G8 o: z: @1 V3 S+ c
6 y0 I  r% \4 W2 \) t2 m+ Z2 D
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
6 g  |6 g1 H, j, x  C效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。8 W; O) ]3 _7 k' w5 C& z7 r; ?
----------------------------------------& B. e2 g# n6 }+ g6 R
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
0 e+ y% w4 i* u; D$ M) g* V在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
! z; A+ x  c1 o/ y: t----------------------------------------0 M& B0 Q8 [1 r7 p$ a0 n
https://github.com/guillaumekln/faster-whisper* p0 P6 ~: [2 v  S" z
安装如下:. w# ]9 G; A5 [
1, Windows 10( _1 o7 g+ J8 s9 R6 j
2, Python 3.10.11
& w/ A/ v. E; l5 L/ m. e* w3, CUDA 12.1
  Z0 O! o# }, ~  S# S4, 在python 3 中安装+ q( c- J* \+ v1 l" Q* L* k
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1176 ^( n: L: ^  S- x0 l& t
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。4 n3 B# u1 S- c: \
5,pip install -U openai-whisper7 Y. m% Y- }8 ?2 G  f+ P
这是向whisper 致敬,可以不装% F/ g, \( {* A6 X% R% J
6,pip install faster-whisper
) f; A4 y5 m8 r7 _+ B0 J* U----------------------------------------1 _. g& t' _0 {* R4 n" y
whisper 我用的命令行,faster-whisper 我用的是python。
' N: [* Z9 O) Q) T1 E# p+ h8 e7 W/ [下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
* X& s& b: w2 x% z& l: c" H# m) p- n+ H
----------------------------------------
/ D  b" ]' P" j
/ }; N0 o8 B- R3 ^! e! Gfrom faster_whisper import WhisperModel) a( p1 s; g5 V& v5 A0 p
; C4 `- B; Q  w& ?/ Z0 v
model_size = "small"; X% o  S; k) m7 `- g
: D+ }8 U* S3 [
model = WhisperModel(model_size, device="cuda", compute_type="int8")
+ N+ I5 b/ T' Z, k4 g, G3 N! m+ @& ?8 H7 t
segments, info = model.transcribe(% v0 m( |  B* ~" ~2 W& V2 |
    sourceFileName,
# I* N8 a! q2 _1 K5 H    beam_size=5,
. T8 v. B! J2 P# b: _% E  `    language="en",
0 [: i! P* \4 [3 a3 i    task="transcribe", 8 P. ?8 d8 p7 b
    word_timestamps=True, 7 \. ]) K9 g4 c( z
    initial_prompt = "Hello, welcome to my lecture.")
. R+ l1 i# t2 _2 n& T$ ~6 {
! X: t) J" |+ C! r  ]7 j7 ]for segment in segments:7 y) Y8 g) C* P1 S- q4 E
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
- k: F) [3 N: M. ?
- f, Y: B  o! T) ]        for word in segment.words:
4 |- _  `) T) V: R, U: A5 O                5 A# e  r; P. ~  R5 W5 U1 k, @
----------------------------------------% V! x  a" ^& U
5 e$ @2 k3 t5 z& b8 I
代码说明:3 n4 `  I' _; G9 W& Q" a
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
; G. O1 @9 A& j$ Y' {2 S; Q7 y但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。6 x0 d. X9 b! j9 O" U& o% r
2,segment 本身是很粗糙的,做字幕勉强能用。: F. G7 c3 P, m1 Y, m! |" ~
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。& m- r' |1 ^# Y1 V0 A  @, c6 L& s. @9 k
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中" V$ V1 y. D+ c# t3 l0 ~
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
4 l- C" g% _. e5 T; n$ }5,model.transcribe 中参数说明:1 l& {3 P+ j7 ?+ ^
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
' M$ F7 q# k: b5 ^) s7 Z其中
& a% R1 L8 a# M    word_timestamps=True, / C/ [8 q/ @; o+ o: c5 |
保证了你能拿到 word,否则是拿不到的: j4 u. Z8 }" w
    initial_prompt = "Hello, welcome to my lecture.")
- C( f# S6 n! o; z保证能尽可能准确的断句 punctuation,但是不是决定性的。" B9 p7 n* V+ b" z( j3 ?
其他参数可参考源文件:. R5 y( H, K- w2 u- u( \1 C
https://github.com/guillaumekln/ ... isper/transcribe.py0 Q/ k" O2 w$ C; m) u& ~( h- u
152 def transcribe(. M7 U8 J: |1 o5 N" I
从源文件你可以看到是支持中文的句号断句的。
- N$ \4 B' P- z( n" j6 |( q1 M2 p! x! _' P# U7 a! P
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。2 ~. y8 I4 e; o$ ^: I4 H" _: Y
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。; M6 n$ ^; [  Z
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。5 y9 |, k# r( n3 N* _  A" ]$ q. x- X
2 p3 P) R* U! E5 e8 y  Y8 }

# x$ w# z, Q" n" |
( x" Z1 |% j( C/ Z

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-7-13 19:02 , Processed in 0.033072 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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