设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
8 u  s% H. C4 m  E# F: o5 J+ q$ Y; i. `  d% N# y( J
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
& _& i. A, u: k效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。: o$ d! X7 C3 \* w7 u$ t! K- Z
----------------------------------------
/ Y- U, E/ G7 g$ o  q显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
1 N8 A+ l, W0 |' V# ~  t" l在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
3 O/ P) ?7 x- F* e9 ?----------------------------------------
6 \) t/ Y# G7 U" C* l/ `https://github.com/guillaumekln/faster-whisper
3 R- Q8 d( `9 \& |安装如下:
% _# r5 I' U6 E2 z% `8 \" T1, Windows 10. M  j2 ^  K4 p8 r9 b6 d
2, Python 3.10.11' a% S; F  V9 {1 d+ d
3, CUDA 12.15 a2 v# t: i& P
4, 在python 3 中安装
8 t4 R# L* C' W! `pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117( t$ \2 _) g; t1 Y# x- `' A
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。$ C% e( C9 T$ C4 ~: w/ P
5,pip install -U openai-whisper( ]% d+ \% C; x7 A
这是向whisper 致敬,可以不装
7 Y6 q5 i! n" u/ E6,pip install faster-whisper5 s- `6 s2 Q8 @
----------------------------------------
( q4 R4 o) l. f9 Z( K- qwhisper 我用的命令行,faster-whisper 我用的是python。
7 z9 q/ m2 m9 t2 Y& O下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:) r, ~+ L/ a5 C1 F( s

+ v2 I4 {$ _7 `----------------------------------------& j0 z; f4 E- V" J6 X$ W3 a% n/ U  }" E

& @* L5 w5 d/ I, lfrom faster_whisper import WhisperModel) F/ L/ }. H- M1 q: e, Y
& i; C1 o" k2 z
model_size = "small"( t* e5 B  u: d- j! n$ s; t

7 ?3 Z% }. F! N& }: f) v$ tmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
. z- e$ ~; m6 C  w6 k" u# T# B$ m; {  n& _$ c' G% U$ |$ T8 o
segments, info = model.transcribe(9 q7 {7 ]8 h* i/ \/ Z8 \
    sourceFileName, + u& B7 p, `7 O* L% \) Y3 K! o
    beam_size=5, - S1 [5 j; @2 m
    language="en", " n( I: V7 s1 Q" u
    task="transcribe",
  Y3 _. z  L6 V; \8 N% }, @. u  _    word_timestamps=True,
- [# h+ k: o! k" _$ @0 O: j    initial_prompt = "Hello, welcome to my lecture."): Q  n& c! K; r9 s
* ~( F! R2 V, X) i- m
for segment in segments:
+ n5 W1 o( K+ C# X    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))0 i: Y4 K" j+ `3 U9 ~

+ @, J8 u) E  ~' T* L& \+ c        for word in segment.words:( m: O0 D) u0 k8 _  N
                - g: x; P/ A) F0 s  u) W' p
----------------------------------------. E/ c3 w: W/ i. P

2 F5 F8 U+ Y; M5 _/ d. q- |  I+ B1 r代码说明:
! o) K( \  V4 }$ ]4 N- u1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
+ ?7 `% u7 {  l' q! h; `% Q3 m但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。0 }* I; P( J& t
2,segment 本身是很粗糙的,做字幕勉强能用。6 T) i( v) _4 x1 L' |3 R0 s3 n
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。3 j* H8 M9 O4 x2 [
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
) {2 q6 P; K. F3 g7 R: o比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
6 e$ _! W  t- W# G) @1 b1 g! V5,model.transcribe 中参数说明:
7 T9 _$ R& U- m* e! z* H) K你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数3 u7 z, E# R- M2 c  @* A- q7 U$ z
其中
5 M4 q+ m0 Y' |3 F4 w    word_timestamps=True,
  w# H3 \5 O' `3 \. I保证了你能拿到 word,否则是拿不到的7 ~: o; o; I* Q
    initial_prompt = "Hello, welcome to my lecture."); l% p) o6 t! Y  F6 w. l# x
保证能尽可能准确的断句 punctuation,但是不是决定性的。8 S9 L, _7 W0 e, k
其他参数可参考源文件:
* L2 {" c* N7 i9 v# U1 ^; T/ Khttps://github.com/guillaumekln/ ... isper/transcribe.py& Y2 k. c4 Z3 J
152 def transcribe(
. v1 F* ], f6 G# K; y4 [从源文件你可以看到是支持中文的句号断句的。
( |- \' K; W2 i
$ `( V. L1 j& o6 x( Y. J/ F. [# X6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。6 G' ^) I6 B: B  K7 A+ X5 y; C
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
, q8 G0 u5 W: |7 R- w! Q. L7 I8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
6 }$ T5 B7 V: D; I$ j9 B* `& ~1 w8 J5 F) S
- k+ M+ p( D- p" W' B
, V7 M" q/ C% j

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-2-22 23:36 , Processed in 0.037495 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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