设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ; x) h% G5 r0 B2 s
8 [7 T% i" o1 x- L, _4 M0 J
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
5 h1 q( {5 r) g, U8 E效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
8 x4 }  @) s; K----------------------------------------
0 x4 K% c, g- x5 J6 V& ?8 D; O显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
( S9 G% _  O% \7 e- g1 a在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
2 z6 O7 w. W, Z" v----------------------------------------
- _; ?6 k5 s% K6 J+ Ohttps://github.com/guillaumekln/faster-whisper; n8 @! s2 s% e, V. `1 G
安装如下:
' o+ f. _1 w9 b- g1, Windows 108 O! \- y; W, d
2, Python 3.10.110 C+ w% H" S8 Q; T
3, CUDA 12.1. N+ q8 a, y/ I% Z/ \' F" `- _8 ~3 a
4, 在python 3 中安装
  {5 z1 @! A6 I1 A6 ^# W2 z/ gpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
# M) |, h& k5 N9 h这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。! ^* }: X& f, C% p# h! n7 \) Y: S5 {
5,pip install -U openai-whisper7 h1 H# ~6 u2 ]  m2 H% k
这是向whisper 致敬,可以不装
4 n; v; q% p9 f: q% G* ^+ p6,pip install faster-whisper
% }4 Q- d9 S% j( q3 x& n# U----------------------------------------& M' D4 W0 T7 A" b3 `3 ?  ~
whisper 我用的命令行,faster-whisper 我用的是python。  B4 i# O! [$ F0 ?/ Q3 e$ B9 G
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
$ X" Z, o. L% j1 y0 V/ T; _6 F0 ^2 J% T& `0 Y) m% q7 A" F) l
----------------------------------------
! Z, l; T, |0 W0 C6 _" @! [; t* J# D4 q6 n$ f9 [0 C
from faster_whisper import WhisperModel
  I! W. R* ~$ R  i0 y. h# a
, E2 Z" ~& K! `model_size = "small"- @7 g  u5 F; D
5 B# @2 w* m9 t$ e* A
model = WhisperModel(model_size, device="cuda", compute_type="int8")
/ u# ~! D( z1 ^2 j* G( s/ x5 C8 E9 F& F/ `8 s
segments, info = model.transcribe(
& b% ~- |! Z- @    sourceFileName,
4 r' Z# p5 T% C8 t( C7 i* _    beam_size=5,
) F8 j& a! K1 S9 d) S& W9 r    language="en",
. T: @: @7 |4 G    task="transcribe",
& w7 B, F6 ~& }* @$ `# _    word_timestamps=True, 5 D) }0 T$ F, o9 S4 s! r& F
    initial_prompt = "Hello, welcome to my lecture."); j2 `& U% ^5 K- }

8 n: [& q0 T. V. K( Tfor segment in segments:/ L; s9 G2 ^! a  Y
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
) ]6 K* t: q0 `, m  e, P- S! k
2 p! \5 f0 f7 L1 a        for word in segment.words:
* r  q) e9 V* M$ ^7 E                " ]1 a( D) t8 u! K" ~
----------------------------------------" \4 J1 G6 X$ D- D8 |
2 v' z7 ~1 F9 ~1 ^/ L
代码说明:
) d, F% Y# b/ _. O# b5 t1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
" x# @, t3 O1 G& Q. N& D0 j9 C* @0 C* k但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
2 d$ m" n5 l9 D3 ]) j2,segment 本身是很粗糙的,做字幕勉强能用。% f2 `5 G/ ]* J! R8 V& }- @
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。- _6 y5 v5 m' A! D/ b7 c  J
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
' Q$ R9 v3 ?  c; _' d- a8 e比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
8 x; w$ z8 u5 h' O5 _5,model.transcribe 中参数说明:3 N/ t- M0 d# G5 w" [  S) C# j
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
( g4 K5 C1 a* D4 K. T: L其中$ ~; P# ~' K& Z7 A0 _
    word_timestamps=True,
, b/ \* i0 d; H, B保证了你能拿到 word,否则是拿不到的6 ?0 }2 l8 V; N  ]6 e2 z
    initial_prompt = "Hello, welcome to my lecture.")
/ }) c6 [4 f+ M& x$ M保证能尽可能准确的断句 punctuation,但是不是决定性的。0 l8 f* Q( \* q$ k5 r
其他参数可参考源文件:
2 |, B$ E6 v) Z, D3 ghttps://github.com/guillaumekln/ ... isper/transcribe.py
* ~6 Y/ N9 G. b, \152 def transcribe($ s* f" p0 m( J4 s5 g
从源文件你可以看到是支持中文的句号断句的。! N; m% X  H" l
/ U/ @; Q" O2 D5 r% i+ L; t
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
# ~6 I; _! Y. ~6 W5 [. z7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
# p3 j" N6 m9 H7 ~: i7 F& X1 }8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。+ B8 x; H& [; }- c

3 v' q" a6 a' A: J* ?5 K
$ v4 M# W' i# H  n0 y, t# k3 [! N! X, Y: @: r+ _( J' _) H' Y4 G

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-3-19 21:50 , Processed in 0.054312 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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