设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
% P' q) X6 k3 q- ^% g
( n7 p$ {  [9 F借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。2 p) i4 A1 I( b6 f
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。- y& O# T2 g7 r' B& `
----------------------------------------
. J. p7 [8 _" a+ d' S% ?' w显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
) h6 j+ U9 ^8 E$ ^0 F, C% ?在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
: _& O1 b* K( o, O1 z----------------------------------------7 k4 d- o$ Z* K0 B2 |+ ?$ m+ f
https://github.com/guillaumekln/faster-whisper' m: H' H7 o$ U- _) P
安装如下:
3 V4 ?% ?4 Y5 T, |. P1, Windows 107 a2 [9 ^8 n% V7 V* V. P
2, Python 3.10.11& C' `, q) m- O- j9 |! b9 E
3, CUDA 12.1% F6 U& S! Y" w) E9 b3 K8 z  C6 R
4, 在python 3 中安装$ [  u* J  v5 \
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
9 R! |7 w+ N  @2 x/ M2 z6 U5 i/ Z这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。0 ]6 n& i3 t- ~0 @6 {
5,pip install -U openai-whisper% y6 r: [9 k. o% ]% t+ |7 @' x. W& G4 p
这是向whisper 致敬,可以不装
) @$ r  E  w1 f  n& _0 u( K  _6,pip install faster-whisper
5 j1 N1 w  \7 w# c9 [  r. k1 A" D+ v& @----------------------------------------
: A3 ^, l' v1 u, L' Swhisper 我用的命令行,faster-whisper 我用的是python。7 k# E* P( ~& Z6 s$ g' `: J
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
: J! i# s, D* m2 a' I  d/ l) R( F  a8 ]! o9 _
----------------------------------------
& a& W! j( y7 D1 M
4 s. X. d) B0 k$ c5 ~) A4 Xfrom faster_whisper import WhisperModel/ z, ^" C% z8 p8 U
# h6 O1 o1 ~3 T0 j! U* p. _- ~
model_size = "small"
* _1 W  C! H4 e7 x! ~) }6 W8 U; R5 a& b" v
model = WhisperModel(model_size, device="cuda", compute_type="int8")% C/ A9 Z( c7 h. q2 s, f3 R+ Q
& h$ K2 b8 n7 m6 x$ C
segments, info = model.transcribe(5 ?/ ?5 I- }" J
    sourceFileName,
6 o8 C+ G+ z, y2 z9 |, F1 c+ ~    beam_size=5,
+ X& N# N7 |0 ?* c    language="en",
4 z6 H7 j. }) u5 ~    task="transcribe", 6 a9 t2 H% {- N' d0 u
    word_timestamps=True, 1 G. n% Q. n  G1 U# n3 r7 i
    initial_prompt = "Hello, welcome to my lecture.")
+ Q* N2 \- c5 q7 p, v+ B9 S- U  f9 @$ {1 N/ o
for segment in segments:8 _% I) P$ v# I. p
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
" t. M2 O+ Q1 f2 s6 ], ]9 E% |, X$ A2 U! W' v  Y3 c
        for word in segment.words:
( K, s9 H5 p* H                ' V& |8 p; t  R8 }2 H
----------------------------------------
& \3 G" G$ b; y$ e9 H! K8 x- x6 E: W3 D! j/ y+ X4 M  S* V, w
代码说明:7 I( ^  q& ~9 p2 q4 M$ ^
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
4 l: l1 P; [/ L7 p% O8 U但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
9 w, {, [& O4 z1 E+ N5 l2,segment 本身是很粗糙的,做字幕勉强能用。
9 b" x9 L( B' O2 W3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
  J0 d2 A. B, @5 F$ W! J& S5 e4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中7 F1 |( P/ p, T
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。+ ^6 O5 G( w' D" T: U
5,model.transcribe 中参数说明:$ E( d  E' d% r# Y* F4 ?. e
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数/ i, ?+ `# S  q5 c! J2 }; ^
其中
9 T  P8 h3 @' c/ M: [! x+ Z) _2 Z    word_timestamps=True,
3 Z" N) n# n- J6 D  O保证了你能拿到 word,否则是拿不到的
. z2 ^6 T* z+ a* ]+ w- ~    initial_prompt = "Hello, welcome to my lecture.")
( m! J- I9 E5 x! B+ [4 |) G% H0 Q保证能尽可能准确的断句 punctuation,但是不是决定性的。1 w. R/ J( I% Z: t! h$ k  U
其他参数可参考源文件:9 e' `% g: S" x
https://github.com/guillaumekln/ ... isper/transcribe.py
- v8 w- d: d8 X7 {4 b152 def transcribe(' Z9 B% D' F; z! z" i
从源文件你可以看到是支持中文的句号断句的。- e/ i9 z; D5 u. s! n

- D/ A) ]0 z( L! O+ n% k: L. u6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。/ p5 E7 c) r9 A3 r! e1 d
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
3 G8 D/ M$ F# @: F0 E8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
7 U9 B' P8 Z$ R2 Y& |' M3 Z( ^6 y/ w" ~5 Y2 G6 d2 u
  A6 E6 N5 M5 ^3 c: T0 G  }

6 I& Z8 k* d# P' ?, h8 j

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-5 05:07 , Processed in 0.058777 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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