设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
; H3 O* p  m$ D. R  y6 X9 l0 }" C( b6 u& S! i' c
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
) b& {! j( W0 o; ^: p  Q3 d, A" P0 A效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。$ w; L3 d5 y' u! {
----------------------------------------
0 X4 g, U  I7 _' x7 ]显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
9 e1 y5 @. ~- U8 t8 E在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
8 D  L+ `/ ?) W2 W7 U0 ^----------------------------------------0 O/ c: x  d) V; \9 r/ N
https://github.com/guillaumekln/faster-whisper
$ g$ _5 I" J9 y5 M2 a2 ]+ l安装如下:
% P0 K* D1 D7 ]2 r- q* l( v1, Windows 10
7 H) t  h6 ?) o: S( T9 {2, Python 3.10.11
4 @3 {9 d) I  Y3 A$ l+ S. f: F6 M3, CUDA 12.1/ n. A$ Q& ]# A( e5 Y% d
4, 在python 3 中安装9 `3 \* f  d9 t
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117  }$ U$ |6 K! p: P
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
' r: Q4 b3 P; X# l  @/ l8 @* D2 Z5,pip install -U openai-whisper( I3 \$ H' T1 _* H) }( f2 I0 F  G" q
这是向whisper 致敬,可以不装4 t& T, v) t4 Y1 L
6,pip install faster-whisper
" v# w) U5 b4 `5 ~' y3 b: I6 P----------------------------------------5 I' r2 U" }) Q: ^
whisper 我用的命令行,faster-whisper 我用的是python。& ]( e7 ?3 s/ m; F/ Y. E
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
1 p% t8 |9 W! _# N+ P" P
% n' H  D* x9 {8 G' v6 F----------------------------------------
* D7 M$ A/ H+ m. ~3 @
+ f) I+ X" g" m* H- |from faster_whisper import WhisperModel
& \9 Y2 q( V! _, |5 t# ~
! _4 Y6 g& A6 }# T( K8 I3 Amodel_size = "small"
+ a+ I8 [; u9 C& v
/ ?. m* J1 A$ m! O0 xmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
" X8 I1 w1 Q2 b- R9 |/ s5 b, v+ V5 A
segments, info = model.transcribe(# B! ^2 Q/ J/ I0 B" e; R: o, m, {6 a
    sourceFileName, 0 y# g3 [5 i3 E/ B# U: P
    beam_size=5, 2 W6 @7 k" G+ O- x- D
    language="en", 3 A' h% _# |# m- T5 _( H
    task="transcribe",
' ~' z) x/ n4 {    word_timestamps=True, 8 r: W. f* {0 l4 O
    initial_prompt = "Hello, welcome to my lecture.")+ I2 z9 @$ j1 T

3 A8 Y4 o8 O# D/ j$ Rfor segment in segments:# K% X3 C- x& W8 y7 B
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))3 P! i0 j* a: c. H

! n8 w6 }/ D! T8 C        for word in segment.words:
4 \$ P: A# H) k( r& `# `4 t                $ Y% c) b0 k* ?$ n' `* y
----------------------------------------5 j" H) l7 m! ~, v. V( N
* d8 M1 c) ^4 A1 ^4 t9 }% F( H  y
代码说明:
# _: f7 s/ U2 r& W& \4 _+ W+ ]1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。4 m  y- d5 v' l5 l# P9 g
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。1 Z/ F% H8 F  O5 [* J. H1 d
2,segment 本身是很粗糙的,做字幕勉强能用。# v' ?" Z: p) V# v; G2 }
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
$ v- a8 |& J0 C- X9 ?; J# @4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中- C* k  _$ T+ |! o  z& {5 }, M; Z
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。, j- \: R+ L2 N- C1 [( x
5,model.transcribe 中参数说明:( s& C: S: _$ g4 L+ \4 b
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数5 ?2 p) o, z6 G# R
其中
. ~4 S+ u( Q8 J1 Y1 n    word_timestamps=True, ; _9 d! I7 J; ^% x5 }
保证了你能拿到 word,否则是拿不到的
6 C0 U; X6 q( S    initial_prompt = "Hello, welcome to my lecture.")9 P. w+ B  Q9 W2 F# u2 L- s# ~
保证能尽可能准确的断句 punctuation,但是不是决定性的。$ ?7 G1 ]6 P) D! D! y* r) x7 |, D" F& H
其他参数可参考源文件:. u, |+ w$ I$ S- h, ]
https://github.com/guillaumekln/ ... isper/transcribe.py
/ g# X" f$ \* D1 O2 Q, L! E152 def transcribe($ V" o4 a5 ]: N7 s5 t
从源文件你可以看到是支持中文的句号断句的。$ j* C" ]0 g8 Y6 L4 ~' U7 _/ X
( q0 x# E" q0 y1 O
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。; h7 o7 y$ k$ g: s
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
& F+ q. R1 r% I8 o9 P2 r8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。/ g4 P3 _) B1 |7 K7 P% ^
0 B& P# B" e, @: D9 z& m

' [8 _4 p. k0 [1 s; v  Z2 m! e) p6 \

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-7-19 09:19 , Processed in 0.040718 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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