设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 1 k3 V1 n) _' }* }
3 ]4 t' A6 b& @' F- M! N
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。' t# ?3 v: r3 H/ i7 s; b
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
" a5 K; O) T, D- l* y, W----------------------------------------; M0 S$ G$ f; E1 d2 B8 v
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
( ^" {8 h* l; O+ E6 e/ c1 u在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
& d# Q, V- d. a( D6 x5 R# l/ b----------------------------------------  X8 w0 U8 T! Z: ?( r
https://github.com/guillaumekln/faster-whisper& I: S9 v' s6 a5 W( c/ }! Y3 q
安装如下:
. @2 \2 [  \" A: n1, Windows 10
% O* W1 `8 V/ X- k" P- r2, Python 3.10.11
2 g2 A& y9 `4 W( \9 u8 \$ G7 M2 u. v3 O3, CUDA 12.18 o( `% Z. ]0 O9 a7 O
4, 在python 3 中安装
/ u' v/ E2 k$ r& a0 zpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
1 k7 H# r" E! s) a& Q这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。( M- N& ^+ F: u
5,pip install -U openai-whisper
4 g5 c- O! F2 A1 [! W& X% `这是向whisper 致敬,可以不装
0 c- L/ H# R1 ?; M2 q6,pip install faster-whisper4 ~; v1 ~3 x; `; a8 f
----------------------------------------& q/ K* N, s3 U3 X& d
whisper 我用的命令行,faster-whisper 我用的是python。/ g7 c' S9 {; j0 u* V+ a1 H% e
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:/ D/ d- M2 |9 y/ q; v( Z
7 w3 y# j( p* F+ p2 T$ _
----------------------------------------
, t( s; K! X" f- O- g) Y* Z, h* {5 M0 I6 X* _
from faster_whisper import WhisperModel3 T* k- A/ y3 V" O
* x( Y" O% B$ A" l
model_size = "small"' h6 L8 t+ T- x4 s

5 C# U' b$ a3 l$ x- ymodel = WhisperModel(model_size, device="cuda", compute_type="int8"); \% x2 W6 f# i

. }, i; D# \% Y8 v1 m9 J! o4 r0 z! Y; S! Zsegments, info = model.transcribe(9 _, O/ A4 Y- m; Y; P! Y' ~( j
    sourceFileName,
, ?7 h& m2 I: O# B' A    beam_size=5,
$ M* h- B! J% w# s    language="en",
/ S" d# O6 N& }: z, a    task="transcribe",
8 Q. ^5 X; L+ K8 P9 H) N, M1 g. O    word_timestamps=True, ! F, w3 s3 [" [4 ?- z, ~/ B8 [
    initial_prompt = "Hello, welcome to my lecture.")
( m) b6 A2 j3 y/ ~" @
3 e3 o4 y4 X  b( s* Yfor segment in segments:
# f1 Z! y( a; d) v2 h    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)): u8 F( g; Z3 v9 D# k8 }

* A6 h5 x' |9 r        for word in segment.words:: \4 q' F) p$ P& ~* U4 \) F
                3 w) K8 }6 p- k9 D
----------------------------------------8 O& Z2 p, f& [% c$ e  I
5 E- K( G. o9 W8 T+ Z
代码说明:
9 w% R" e; M. d3 p1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。% R, }& k* B8 Q" u" r7 h
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
0 b9 g. t' i6 H* O2,segment 本身是很粗糙的,做字幕勉强能用。
3 H% \0 O- c0 }4 u- W3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。2 Z- h9 ?1 j4 V  Q' d% m7 ?) f% |
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
5 Y) S2 H' ?+ _$ p! [比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。5 U( P) ?7 A0 d
5,model.transcribe 中参数说明:% d4 C) V4 U8 L
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
- ?3 L. k" }" u- Q, D5 |其中" b% ]3 ?2 t6 h# Q
    word_timestamps=True,
. T& d8 W, U1 }/ F: Z* [保证了你能拿到 word,否则是拿不到的
; c+ Y+ x$ v/ V2 x& P    initial_prompt = "Hello, welcome to my lecture.")
6 G  P: ~6 B* \' f: y0 P3 v2 i保证能尽可能准确的断句 punctuation,但是不是决定性的。
& m$ n/ c8 |( [8 t! ?- x其他参数可参考源文件:
7 X8 n  @$ `" r+ L0 L9 i- Chttps://github.com/guillaumekln/ ... isper/transcribe.py0 a8 M! [2 d% b; }; m+ ]5 E6 I
152 def transcribe(
5 \# `; q( T( u- G3 ^% \7 q* J' s; E从源文件你可以看到是支持中文的句号断句的。
# G+ Q# l6 g+ L, _5 _' R
( x. ]/ p1 h4 m" Q+ A& H6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。; ^3 Y; @1 [4 P: b
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
/ c/ k* @& g# T+ O6 j8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。* T) j! x: w) O
2 C  s1 _2 C4 u/ \

( ]1 N+ H: k; P* q6 H0 W6 b2 g  \+ {/ J

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-7-28 04:58 , Processed in 0.059717 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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