设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
  S2 d  N" e5 Q9 S2 ^+ z
- p6 T6 s% z3 x( ]' M5 _借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。/ x/ i7 \' U- L
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。2 w( n" R+ X. O0 b4 _/ a
----------------------------------------
9 j! H+ M" C! h+ a4 k* ?显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
( @. u- \, \# g5 t4 P在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。* h+ o7 x9 n' T
----------------------------------------# X. D+ P7 T' V' [  d& k
https://github.com/guillaumekln/faster-whisper
6 z6 V7 \* ?  N" U: d2 V# h3 Z安装如下:" R* I; X0 d+ I' k; j2 I
1, Windows 109 r- s# {6 X5 {# Z
2, Python 3.10.11
3 C1 ?, p/ O$ b' v7 }4 J/ W3, CUDA 12.1. E5 ^& S7 J! j/ o
4, 在python 3 中安装8 K1 ]6 q5 u1 B) Y/ E
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
3 M3 ^7 E0 l$ S- l0 I$ M" l这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
3 k+ x, @5 N; H/ ?5,pip install -U openai-whisper
" S0 v- Z5 m  z5 c4 U/ M/ [这是向whisper 致敬,可以不装, D! C0 u0 Z% d' T' @' N5 C+ _
6,pip install faster-whisper
& M1 m0 t2 b- S----------------------------------------! X8 B# L3 S1 A7 n' K
whisper 我用的命令行,faster-whisper 我用的是python。' S2 `5 I, e4 @+ X, y9 @
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
* @0 u1 Z. t: t# }. l7 q1 ~8 @2 s0 a8 h
----------------------------------------
' Q; m5 c  k4 n0 t# O$ J4 Z5 \; x8 f4 A
from faster_whisper import WhisperModel
+ A+ ~- d( B2 r& K1 Z' n
& A: R- `# n& g& `8 X5 v2 D2 gmodel_size = "small"! Q7 E3 ?% y/ x

: w3 c! I0 F$ u, ]$ K, l% cmodel = WhisperModel(model_size, device="cuda", compute_type="int8")- g2 m1 L- n4 V
- |( A6 s" ?/ ]. x- A
segments, info = model.transcribe(* X0 k% |; ^6 y  k( w& r/ Z2 X
    sourceFileName, 0 u" e' q) c$ d0 ?+ x
    beam_size=5,
* M4 X* h" C" d    language="en",
: J  q+ u8 J1 M* }    task="transcribe", ) }& X* _9 }' ]' {, }# E8 }
    word_timestamps=True,
$ B9 |' ?5 F$ |/ p6 Q    initial_prompt = "Hello, welcome to my lecture.")
5 P3 c9 }; A! t4 K& s# d1 V& C1 h9 H' `5 Z- `: R9 ?
for segment in segments:9 R. _* V# |% Y  T4 v
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
) _! J+ u, v4 @, g3 [7 g
$ c6 l- |2 ^, b4 X" z        for word in segment.words:- ?- R: ^* X/ {# h+ n* ]' g
               
6 @/ |, N% B- Z+ q& s' t2 E% {----------------------------------------7 s5 l9 q! }5 h) L" X! b; ~8 r
0 U) s! S- l) F' e) B* i
代码说明:
' j; z1 @$ H5 b) K; J) `; ?1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。/ U  I, Y4 w( ~4 w; y
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。$ s1 P1 e4 a/ A  ]9 O1 a2 Z
2,segment 本身是很粗糙的,做字幕勉强能用。
1 H1 A- L* c) |  Q8 ~( W3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。2 D1 L4 d; s& I' z# e& \+ v
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
! ^# W( ]9 q: c" ^# L比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。( W& U1 h2 ]% H% |5 {
5,model.transcribe 中参数说明:
, o; P8 l% g, p3 n: {- o) l1 O你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数7 Q+ N' o. C0 T, m
其中
' i/ A0 d" r% R) t# D( f# w4 t    word_timestamps=True, " [2 }3 P, C) C' c; R) P" b: ~8 k* v. m
保证了你能拿到 word,否则是拿不到的
! W, q( c" [4 N0 B) w    initial_prompt = "Hello, welcome to my lecture.")
& D, |' T9 z1 P. u7 {9 j保证能尽可能准确的断句 punctuation,但是不是决定性的。. n* o1 H# b9 J$ V" U# I" ]5 F
其他参数可参考源文件:
. s9 _0 y/ a5 qhttps://github.com/guillaumekln/ ... isper/transcribe.py
; b# D+ F4 V; @6 _5 N7 U  c8 V& H152 def transcribe(  |; T+ l( `1 b! K# d$ `
从源文件你可以看到是支持中文的句号断句的。
; P0 T1 V8 |- L+ |7 t1 o; l8 B* ]8 c
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。1 r" j, ~, |7 N$ x- z
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。% ~! [3 m0 i* M- u
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
' d4 a% ?! G$ C0 X6 `
  p& p. P4 I, m# f8 v: b" p* G# T$ z+ d 2 ?/ Y4 i7 ~1 @2 F- Z% N+ A& x

' j4 m# |4 A: o. W' ^- \5 d9 o. F

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-3-31 08:09 , Processed in 0.063998 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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