设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
/ u/ M+ y# l% s9 M- n
8 l: S/ Z8 n: S/ h0 t7 s借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。7 _* [, ~3 q9 R( {* c
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。. _2 E0 J" O& Z0 w
----------------------------------------
5 v* \- F8 x; a* `! Q$ x8 J8 ~显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
2 B% `7 A; d$ Y在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
' W! E7 Z- w9 g1 v0 g  F% O! n" `----------------------------------------5 U. _& }5 o, e) `* n) |6 h. n5 l
https://github.com/guillaumekln/faster-whisper% R/ U  D7 {) I- b
安装如下:! Z9 G1 t- R. {' }
1, Windows 103 k! n) m+ O2 @: J& W
2, Python 3.10.11
) t8 A* r% {( t0 h8 Y! C* J. x/ w3, CUDA 12.1, V" p+ b+ O4 {0 s1 u6 k2 G" {8 ^8 G
4, 在python 3 中安装7 m' ?2 M4 ^: @" j) L, Y. A- t
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117% e3 @1 U" ?9 h) _
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。% h$ v5 m* x# _8 O1 O( Q
5,pip install -U openai-whisper
% g8 s( w. f5 ]& @这是向whisper 致敬,可以不装+ J8 H+ K" S+ R" T$ X) \. Q6 x" y
6,pip install faster-whisper
. ]" i. a, j) ^----------------------------------------
  \/ v# E6 I( @whisper 我用的命令行,faster-whisper 我用的是python。) A- W8 L- i3 T8 i2 V/ u- N
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:, \6 @+ h8 P' }$ Y& ^* p* U

% R1 o. n8 ?8 O5 q----------------------------------------
. c. T+ r, B# _0 {0 L
: X) U, j( Z' ~  d7 D$ mfrom faster_whisper import WhisperModel7 p  n9 H- ]7 I" @% m4 g; O

# S" w0 _2 X7 f2 H1 K5 Tmodel_size = "small", R2 d* G5 G0 \, X+ z$ T5 k

$ z* e+ b/ O/ y, B% Fmodel = WhisperModel(model_size, device="cuda", compute_type="int8")7 B6 `, n7 u1 b* C: h) f

3 k* A6 o4 u  P5 f- j3 |segments, info = model.transcribe(
7 H0 G* B' C. e" i: R    sourceFileName,
1 n" q& {: `! h( [3 }    beam_size=5,
; L! i3 X; @# Y" I% I" c    language="en",
9 n1 D+ B  d9 B) S    task="transcribe", 3 }3 I# k; r) g4 A
    word_timestamps=True, # V$ w* h* G; j) Q) H" ^, r& C. `
    initial_prompt = "Hello, welcome to my lecture.")8 a5 b; z. ~2 u9 s
& h+ _- T* y7 a) w$ I
for segment in segments:
; f6 r+ L6 v0 |    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
1 s# d( d1 D: r5 V4 y; s7 o6 v
% p) ~; N( L$ X" @' e1 {        for word in segment.words:' g! o2 @4 b  m, c" Y
                $ t( W) B5 t: N$ X- s, k, {
----------------------------------------' q* n$ P+ b# o) y: w: L3 f9 O# l

0 o. U' ~2 d# e. ~& s代码说明:  c& O& \: u0 J
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。4 V/ Q/ f: p0 b
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。+ F3 O2 @0 s# `# U
2,segment 本身是很粗糙的,做字幕勉强能用。
$ B- O  J0 f/ q8 w4 B3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。# E9 @* X+ G) ~' X- J& U5 _( ~
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中& }: v# m- a) G( b
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
9 }3 l7 \0 H" m2 Q& t! i5,model.transcribe 中参数说明:0 y8 @. `) Y5 _4 M% [
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数0 Y9 ^( L) x, D8 M' l4 c! C
其中8 h+ U: V" e6 y
    word_timestamps=True,
; B: z$ f6 I( {) V保证了你能拿到 word,否则是拿不到的3 X4 k: V  o' c8 h4 ]+ Z) n$ q
    initial_prompt = "Hello, welcome to my lecture.")5 T% X- `7 P4 o1 t4 r  a
保证能尽可能准确的断句 punctuation,但是不是决定性的。
, c' Q+ g2 g+ G/ f2 a1 x其他参数可参考源文件:; V% o. g2 O# O5 v- b" t
https://github.com/guillaumekln/ ... isper/transcribe.py
; b5 g$ |; j7 c6 E* F5 z5 W( ~, B' A152 def transcribe(
" B( y, j8 ^" D  s6 B从源文件你可以看到是支持中文的句号断句的。
8 _  G8 C8 l# a; ~! [+ e; f1 f7 n) f& X" p
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。0 z$ U; t+ t. I' x
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
: ?: ^0 P  {' u  W6 o% P& N8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
# o2 j1 w; x6 U0 c: f6 d3 b* Y2 ~

, H  Z& S) P8 t7 o2 ?! b, ?/ R- U2 S! E3 ^0 J. L. e

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-15 22:48 , Processed in 0.031901 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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