设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
4 H9 k7 I9 }! z$ N$ ]4 E( ~9 R) ]$ Q  y# J* Y- Q
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。3 q0 r! i+ ^7 I
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。6 y3 `4 Z+ o+ \
----------------------------------------
6 `% S: I& `5 p( X9 k/ x! K显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。1 [3 P) `" m5 _
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。9 {- k. f7 D+ U& c& n) ^, j- }+ Y6 ?  Y
----------------------------------------
2 R7 a( c* W! n% G8 }https://github.com/guillaumekln/faster-whisper
4 e' c; B6 m, J, f安装如下:
6 f7 t: y" S6 F1, Windows 10
' z6 q* i1 ]  ]( Z) @2, Python 3.10.11
7 [/ g; G7 S& a" |3, CUDA 12.1, y. O, \: _( ^+ U, K+ ?+ \! B
4, 在python 3 中安装( r9 Y3 u) n- x" F) M
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
: @* l0 x3 K% H4 B- E1 |这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。" c0 ]" h2 ]( [) B" z8 s& S  D
5,pip install -U openai-whisper
* ]0 @  c; B% }4 K9 N8 \' `1 }/ @这是向whisper 致敬,可以不装
- O% Q  }) M3 v. F: S7 l6,pip install faster-whisper
# |; `2 v: D) V% b% E# j& u# ?3 f----------------------------------------
& r3 v3 M, J( Q( Nwhisper 我用的命令行,faster-whisper 我用的是python。
) H( o- Z0 t: W6 I. e8 `# m  E下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
8 ~9 ?( `) }" t4 W" b3 A# \9 v; s6 D/ W4 |' l
----------------------------------------5 S1 }/ r  |# a. M2 P. h

0 G* W  ~2 \/ B- cfrom faster_whisper import WhisperModel7 F, \% c$ u8 f: L
5 o" r; H$ B0 S, Y2 f) ~! d' p
model_size = "small"6 |# E8 N# U6 w, p

" a7 ?1 P2 y5 t! t2 ^! omodel = WhisperModel(model_size, device="cuda", compute_type="int8")
! k# ^( f: ]: b3 y# z0 p$ P+ T& x" X5 T' F
segments, info = model.transcribe(5 x2 B; {+ V2 A# @9 Q6 r4 n
    sourceFileName, $ \! k) _7 [2 C0 Q" d
    beam_size=5, 0 e3 e) H% r1 t- ]. p& j
    language="en",
' N; P/ X5 n' v    task="transcribe",
7 V; c. Q( f/ x1 ]( i& c5 k  |    word_timestamps=True, 9 W; P" ~9 h' j2 V) ^! b
    initial_prompt = "Hello, welcome to my lecture.")# ]/ S9 ?; A1 p; n3 I

& c, V4 X& Z; ufor segment in segments:* N" |+ M9 m! [3 ?4 E
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))5 N. Y5 w7 }( ?0 L4 E
$ Q! t- ^' s& l) X4 d! `, @+ {
        for word in segment.words:; K$ O: J! u) f; g: q( e5 e+ N
                8 K3 R$ _. G) r$ [
----------------------------------------
  p% ~# u* P0 u6 S. O3 X
& `9 D3 ~& q. ]* U; @3 w- \代码说明:
: m) z9 V; c) A+ d5 c' ~/ u& R3 r" \) O! S1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。& B! N# b1 F3 t8 a% m
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。) U! K' n2 ]5 ?0 g  T
2,segment 本身是很粗糙的,做字幕勉强能用。
8 V4 J: W  K5 w* B! Q% G* V3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。6 Q1 n. k/ A7 ~7 |( O3 G
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
8 T5 V0 C, `9 F6 a比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
" M' \1 y3 L5 [1 m: a/ l# G4 e3 M5,model.transcribe 中参数说明:. J8 ?( c' x  h% h" x
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
4 E4 B  n, b. B, }0 N, D; ^其中$ X4 x# y7 B- O# d
    word_timestamps=True,
! j( A0 r: ~- a7 P保证了你能拿到 word,否则是拿不到的9 K# N$ u7 ]; f7 b& S1 H" ?8 u4 g
    initial_prompt = "Hello, welcome to my lecture.")
/ H/ I9 n! c) s保证能尽可能准确的断句 punctuation,但是不是决定性的。, W' S, f" v! X1 W  @
其他参数可参考源文件:
' E- \# @0 D" X1 z. h7 }4 j' Mhttps://github.com/guillaumekln/ ... isper/transcribe.py
; h: [) H' m8 i2 @2 J152 def transcribe(
$ M9 f- J5 o  ?9 D$ `/ c8 g% i从源文件你可以看到是支持中文的句号断句的。+ \: \% g- m1 X; B) ?! z8 I
4 I3 K* B3 a: `: K
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。- n$ r1 `9 U, ^' x
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
5 _3 @- V" d  |; p3 D+ V: O# V8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。* g) E# K! \- q
6 \7 n" m( X2 ?
) R: l" k; C6 o  h  R* s$ L
% l) N7 X7 L  Z! X" w' j

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-7-22 09:17 , Processed in 0.060832 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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