设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 2 u: Y$ L0 r  D7 L8 ^# Y

) D% @& y2 |* }. t8 w" `! W借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。( \0 A% |6 B% \3 k6 \  |8 P7 a
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。2 I% o/ J9 P0 Y4 V1 W
----------------------------------------
, A# o/ U+ n) j" k' y! w& c显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
6 P2 R& }$ i, f2 W& e" ~在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。; h  l6 I0 T1 [9 ]
----------------------------------------6 R3 p  u7 D1 o% a8 z) K5 j
https://github.com/guillaumekln/faster-whisper
& A4 ?, `8 t' T7 W4 `; D, h3 A2 P安装如下:
! I& X! N/ p  o  I$ u; C" L1, Windows 10  e( H3 L8 P) H6 k
2, Python 3.10.11
* i; @% ]  Z5 I" M9 Q3, CUDA 12.1
1 w, u- W  ^2 z' T% H" o; q4, 在python 3 中安装
+ H: Y" z- R2 G4 R$ x% }pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
) m) x: X8 M7 P) L) m# ]+ @9 X这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。$ ?1 \4 \. `$ u
5,pip install -U openai-whisper: X; y! Q3 _) [( e. _$ [
这是向whisper 致敬,可以不装. A+ J' P$ F, F1 y/ R
6,pip install faster-whisper
6 C2 f: S) \' y* C& c----------------------------------------
9 F7 V: W, }% C* x1 x! uwhisper 我用的命令行,faster-whisper 我用的是python。
) d0 o' ^+ i) X下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:0 S" X: c2 q  R) Y8 L' G4 k
. c$ I' A8 k0 @1 j6 O2 ]
----------------------------------------/ T$ w$ t+ H! c5 @' q$ W3 H" Q$ M
8 D* Z5 x1 Z3 s, ~7 ]8 d6 a
from faster_whisper import WhisperModel6 r0 a0 Q0 m1 h  h
3 A1 o  y* Z1 y+ ~( r
model_size = "small"
* X: {7 V! H$ A+ e7 i
, Z. c( `' _; n5 y$ Z$ X  B5 ]9 Fmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
. D/ O$ K7 r1 x  b, R3 U- C2 r& U; y/ ], N
segments, info = model.transcribe(5 i' {8 o! f5 Q
    sourceFileName, 6 p: q+ O" F/ {
    beam_size=5,
4 I1 ~/ n8 S+ k    language="en",
- K3 w0 s6 r+ `1 w& X, Q    task="transcribe",
8 b$ t" i' e) W5 T" Y! ^" Q! N    word_timestamps=True, : v7 `/ R  ]& c$ d$ P( r  u
    initial_prompt = "Hello, welcome to my lecture.")0 Q, M' w2 T, v2 L

3 p1 p/ n0 J  H! `- P# Lfor segment in segments:4 t% ]; q  [1 L
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
3 n  f4 [9 U. z9 D. Z1 d, E% T1 H- X% L4 J' v. Y3 w
        for word in segment.words:
. s1 |2 ~6 P9 u9 }+ B. H+ E- n                # W1 U- s  x% J: p3 G
----------------------------------------! M! y' v9 t" b! W% F

( q* P+ E: {- S) V7 S代码说明:
$ @& m0 v+ F( d( A5 \$ l/ m3 T' A( k1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。' U7 s" {5 _$ M3 P
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
9 G% s8 q+ b1 _# w2,segment 本身是很粗糙的,做字幕勉强能用。
* L- b. X! O( ~! D& ~! ^3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
) }# I+ E. d0 \# p8 x4 f+ K4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中6 E, f, f# w! k
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。. ~* Q! f1 l9 c5 }
5,model.transcribe 中参数说明:
, d: c, Y) n$ F8 f; g% Y7 P你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数5 h3 g6 h: l" M" N3 M4 \4 r! r* ^
其中  X7 s; N+ f' B" e, n
    word_timestamps=True,
5 J' M8 I* C1 l( q/ E保证了你能拿到 word,否则是拿不到的# @) U# A$ c- T7 r$ r& K: y* c
    initial_prompt = "Hello, welcome to my lecture.")
8 ^; {" ~' {/ p5 r3 M保证能尽可能准确的断句 punctuation,但是不是决定性的。
4 _2 X, K- u  j其他参数可参考源文件:
2 t4 ]+ ^+ f9 m  @/ G3 V2 rhttps://github.com/guillaumekln/ ... isper/transcribe.py: A' g2 T+ T/ I
152 def transcribe(7 _) w0 q( e% G9 @7 n
从源文件你可以看到是支持中文的句号断句的。
% D6 {& `- q" J6 P8 p9 j0 N
- B$ F# q7 w; ?/ `5 O" a) R6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。' U9 o9 P1 \- J3 g
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
, Q( `$ z" h1 A5 h9 ?8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
9 B4 g. B1 o! R8 l: T
7 C; \9 u5 O' `! O
0 f" p" E0 ]& u0 m
% e* Q' v" R" z0 q, P& O; X

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-20 15:07 , Processed in 0.058738 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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