设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
4 Q7 P8 |2 i+ N! {
9 P( R$ Q* P  r" g. m借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。6 R1 b4 X, A3 [* a" N6 d
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
' }0 v# Y$ [' X7 s$ I----------------------------------------% R  N) d: i8 P# ~( i& k
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。! }# L5 e% R" t; [! C
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
$ @0 @: r7 ^$ V4 B, A( o% X, L0 U----------------------------------------: s) [" f5 n7 @2 _, K
https://github.com/guillaumekln/faster-whisper9 p6 }$ Y1 A2 b
安装如下:
! ]) F) Y9 Q6 J+ C9 V& B# \* `2 z1, Windows 10. L( K9 E2 b2 y  q# V
2, Python 3.10.11
* j! s) O4 D3 I: B3, CUDA 12.1
9 t) P! s: `  B- ~: H! {; h4, 在python 3 中安装
# {  u# W" y% `2 H) L- {pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117- R) Q9 T( u/ w4 B$ C
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
4 {# g5 D, i) N1 Q8 r5,pip install -U openai-whisper
+ m5 R: }; Y" A: ?$ e. V6 v! Q- r这是向whisper 致敬,可以不装& W  D5 Z: F' m/ t5 v
6,pip install faster-whisper" v/ @7 w& E* l+ y. g* R
----------------------------------------1 W2 f3 R  D& B: x* L- `4 M
whisper 我用的命令行,faster-whisper 我用的是python。
; `0 j. J' [- e下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:+ c: k1 E% g# A6 ^, g6 _5 Y# }
: L0 y# l2 [* M4 a/ N8 y
----------------------------------------
- Q9 |( J- J  ]1 b- q+ c. n. ^. J  V; h1 n9 q& f8 k* o
from faster_whisper import WhisperModel
5 n3 j$ @4 E) H
3 f) e# T( U4 q# M/ m& f& _6 Pmodel_size = "small"% @/ c  K$ U- l2 k

) d! }7 I- i) V; e$ \. Cmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
1 v7 Z* v0 J4 O* C9 s7 m5 j) y* A4 B* b+ U
segments, info = model.transcribe(
' T% X$ c+ p3 z    sourceFileName,
" K# I2 S  @2 W8 O9 p    beam_size=5, " |6 Q) S$ l" P0 U; e+ x- u# K" b
    language="en",
! E, [" T0 Z2 v, V+ S9 B    task="transcribe",
) a2 p% \$ p3 ?# I* A2 P; X    word_timestamps=True, 8 M% z( M( }4 f! ^& S
    initial_prompt = "Hello, welcome to my lecture.")
+ H$ {7 J6 z% {: W; J! g' U6 y* G, K, Y9 \
for segment in segments:6 \' s( \+ v& A. [4 `
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))' ]# R7 ?$ |8 s) w( w5 [
3 }1 r7 [2 S2 A  d, f# K. w
        for word in segment.words:
8 h8 [3 @1 ~" \: N& x  B               
! N8 i" x/ {+ a% x% \----------------------------------------
5 t* a/ U- d2 d- j3 l- T0 d& R' f2 ^) L* ~( x
代码说明:
$ k2 e( H  [( `' Y0 S# ^0 `& `. W; e1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。9 o. f4 f  K+ P& f
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
8 i* P2 A6 O2 c$ o: _2,segment 本身是很粗糙的,做字幕勉强能用。" U  n3 N& [9 m& |! g7 ?1 A- I( \
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。# c& \/ I0 X. P" {5 Y" \
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中& J( ^, t- W9 S* A, d1 V0 J
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
  `. j" }- D( v4 {. Z" b% `' Z5,model.transcribe 中参数说明:0 [' y( Z: Y8 N: B2 t
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
; Z' e; S6 {! K4 z& D其中7 ?  X7 A8 _# @% }
    word_timestamps=True, ) |$ k2 \' z1 t0 Z- a/ r( X% C
保证了你能拿到 word,否则是拿不到的* h% @( V: y4 w
    initial_prompt = "Hello, welcome to my lecture.")$ z8 O* l2 k) v2 b; U" _8 ]: l
保证能尽可能准确的断句 punctuation,但是不是决定性的。; K, ]% j% q; O
其他参数可参考源文件:/ e$ O+ y0 X: a6 J- r& y
https://github.com/guillaumekln/ ... isper/transcribe.py
3 \8 t' m& h6 f9 U152 def transcribe(4 p$ f9 r, J4 X
从源文件你可以看到是支持中文的句号断句的。; ^0 M5 ^; P# g1 R
  `# L3 u8 F" u) m6 \
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
8 h2 c* W8 \$ P% |$ ]  e7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。' S. m5 v' x5 _" Q
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
9 d$ W* j. R% p0 j+ L) w% o9 J( {& h/ v! |6 }

# T/ B- V2 j* T0 P" W3 \
5 O: t; w; r8 g5 f. E; ]

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-11-5 14:08 , Processed in 0.030297 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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