设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
: D$ a- w9 m5 m$ U1 ~; v
5 V7 o, q% h0 q* {" F" ], f借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。9 c) n# {4 `- s6 Q: }3 V% [8 f
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。$ J! u' d3 j' K$ ?2 T
----------------------------------------
6 d- _: f4 f5 ?8 r& _9 O显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。1 u$ A" r. M+ u1 c- ]& E
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。2 i& ~1 J1 K" J# @2 W/ q, N4 Q
----------------------------------------: N6 Q3 P- T! o6 p
https://github.com/guillaumekln/faster-whisper. c+ r$ g) S! [' d2 h1 k4 r
安装如下:
3 r6 m% ~/ q' t0 u; t0 E* q7 a1, Windows 10
" h3 P8 B2 [8 v" s# t9 [4 [: [# D2, Python 3.10.112 f1 s" B* W/ A0 Y. n# h* _9 _; I: x
3, CUDA 12.1
" T0 `# g$ |2 n/ W. _: `# B4, 在python 3 中安装" G% ~  a: `3 E
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
' `# ?9 R+ K4 u这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。; s/ B+ x! R$ m3 x7 j) i$ y
5,pip install -U openai-whisper
3 z0 \, F0 C: L6 t: s3 y. V. E这是向whisper 致敬,可以不装
% D( p7 F. [3 b' g6,pip install faster-whisper4 I/ M% z$ V3 f) y! M! w
----------------------------------------9 R' x4 a9 h) l9 ^; `/ W
whisper 我用的命令行,faster-whisper 我用的是python。
: c1 }" K% N% u& J% D6 s, y" ?- c4 K下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
7 d3 O" H1 {1 g
+ l1 }  J. t% M' f----------------------------------------' g4 d. r; w3 e) @
* y3 B* U# `5 r1 h; i& f! r5 w+ |5 Q
from faster_whisper import WhisperModel1 \0 v, ~# E+ j8 j
4 M" d1 J- k4 ~' }2 Q  c& g. h
model_size = "small"/ D8 a  J: K  {8 f

+ e3 L0 e8 d9 Y) S: ^1 amodel = WhisperModel(model_size, device="cuda", compute_type="int8")
- n, }8 T: o5 ^1 \) A+ y* ~; `9 m/ o2 P, g/ t4 N
segments, info = model.transcribe(
4 k" s5 r% h  p. g7 o$ R2 u    sourceFileName,
6 Z6 N) T3 X9 {* G( p( i    beam_size=5, $ G  X- L  U) H9 R' s- |
    language="en", $ R: s. D3 c& p) m) O: A* U8 I- e
    task="transcribe", * D% }( O. y* |8 J
    word_timestamps=True,
3 S/ }: C  E4 X- j  `    initial_prompt = "Hello, welcome to my lecture.")" X7 W: E6 |5 P4 g

$ N$ w, }. \' O8 g  ]" Gfor segment in segments:
+ m) o2 x$ P8 R) G% G    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
+ @$ s! c. C9 y, D% U- _. k$ s  a
* }) o/ R" @; S0 g        for word in segment.words:
9 ?# h) E  n2 {                - Q) Y; P0 U+ P$ [$ @
----------------------------------------
% z6 Y/ F. m/ S) U3 ^5 k  C9 u& h  h8 W# W! Y' i* @, L
代码说明:
& J0 e! y: ?8 y* e9 k. y1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。4 G* M* Y3 ^3 c) {) j% |. P
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
$ t6 Y" {8 b% S9 a8 U' V/ N' B, U$ ?2,segment 本身是很粗糙的,做字幕勉强能用。
) D, {, d7 Y) X; a' r6 o$ {( Z3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。9 ]# A9 f% N( i3 g6 B
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中5 Y8 Z) J; o. F0 a. W5 n
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。6 y1 e( q- ?7 H& R& @* E, L$ k
5,model.transcribe 中参数说明:
1 z: v$ @6 _3 V( w你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数0 b& v6 S1 S" g2 Y* y$ J2 i
其中( }, f* r" e8 ?: ~
    word_timestamps=True, 2 Q0 s- |+ J) U- D4 Z- G8 j! w
保证了你能拿到 word,否则是拿不到的
3 C* G5 n: S6 ^    initial_prompt = "Hello, welcome to my lecture.")& k3 |) j3 A$ J3 m/ z8 Q' d
保证能尽可能准确的断句 punctuation,但是不是决定性的。
1 F. Q1 M, e0 x) n6 |5 r其他参数可参考源文件:
4 I* _4 v* q! q4 w8 Rhttps://github.com/guillaumekln/ ... isper/transcribe.py! c' t; A3 k' C: f8 ~0 Y
152 def transcribe(1 D' [( ^8 O" w
从源文件你可以看到是支持中文的句号断句的。
4 A% z' {% [: ]  x2 R
8 C# L0 G1 P" I5 _6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
+ ~% ~8 s8 I  ~' v8 e7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
3 _* v# k, {+ d4 v4 i- ]5 b, ~8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。- i) n8 K0 V9 Q6 a8 m! O; V
6 D, O3 }- A$ U
" q$ |! j7 `: E$ _
9 @/ V0 q$ C& {- W3 n

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-2 04:55 , Processed in 0.063710 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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