设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
& s' o/ K2 o& q% B7 O( o
& A# _7 {1 s/ `, _/ j( z借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
0 O3 y! D9 S! Z/ X* y. c2 M9 P效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
, z/ R& F% P0 S' v4 b----------------------------------------
) g3 t/ L' K! p  R& g显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
0 v# W- ~8 @: X' s2 z在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。4 J: T, h1 H6 m# B2 a
----------------------------------------
5 @  |, }+ B' X7 g" C  v, m3 hhttps://github.com/guillaumekln/faster-whisper
) `9 b* h0 o* \) _, |* P# V安装如下:! ?# z; V8 z( @! R# c
1, Windows 10
( c1 {* t1 @7 y2, Python 3.10.11" o; A/ I: M% \7 x4 a; {
3, CUDA 12.1
" A3 K+ h3 ^! B$ e: T4, 在python 3 中安装
) R$ X, @1 Q& @# J* t. `% ypip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
  l$ j/ ]4 R2 @* l0 p这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
9 d$ ~! F. t, X: n8 [5,pip install -U openai-whisper& Z% s1 j  x2 S; w+ B7 _" B* V
这是向whisper 致敬,可以不装
5 V( k# ^' F" b( R; _2 B6,pip install faster-whisper5 i- X/ _" u0 L/ i9 D
----------------------------------------
9 t  @. ]" p2 }/ }$ swhisper 我用的命令行,faster-whisper 我用的是python。& W9 H8 K$ ?, T  R
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
% w0 g( ]" \, P1 ~
# ?8 t. |# C4 h& _2 v4 L----------------------------------------
. f! _9 _( \. _0 g
3 c: C7 \3 a" Y5 ]+ P3 mfrom faster_whisper import WhisperModel
+ b" @! o% h- N- J6 W! j" u/ D" ?6 `8 f" n  x
model_size = "small"; o/ F7 `5 f4 ^7 D; S" B
5 q% h1 y* k! H0 U" ^
model = WhisperModel(model_size, device="cuda", compute_type="int8")& ?- j4 [$ ~1 P: u, v

' T( e. h# l6 K; B% Jsegments, info = model.transcribe(
- q4 N$ G8 \- e    sourceFileName,
% u4 e: [( u9 v2 L8 X) t, E0 c  S    beam_size=5,
4 r' e) y- w8 ?( y4 f    language="en", # X# X; U6 {$ F7 ?* X; l# a  A
    task="transcribe", # Y& D) @* s0 l9 T( W% K' _/ [
    word_timestamps=True,
* v1 l2 C- i& o0 j$ f6 h# `, W    initial_prompt = "Hello, welcome to my lecture.")& s( I# e1 k2 ?+ G
; P5 \+ ]& N& s% X
for segment in segments:( d% {6 o, D# ^$ n
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
+ ]4 J# I1 [$ p! m. F' R
- C$ ~2 i6 i. d/ ?        for word in segment.words:' }, k& B  U" w7 {1 [  F
               
: {; @* z! {2 J" r% e* \6 ]----------------------------------------
, o. e. _5 B, n7 q& v1 `1 N; M2 Z+ w* J- p
代码说明:
3 y# ~5 h" d  M' ~1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。& L( D1 `8 h6 u7 r  p
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
3 Z1 z* w5 m7 G( a$ k2,segment 本身是很粗糙的,做字幕勉强能用。5 X+ ]/ D* ]% L0 h$ a
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
1 L/ A- K3 ^& |' C7 y; K4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中/ z4 ~9 y, `" P1 b% z  o3 _
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
! C( [7 e7 k+ |& _, N' O2 |5,model.transcribe 中参数说明:( w# X0 h9 _0 I* H% G6 n9 I
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
6 q  _0 x' x: v5 |7 z% m5 c1 c5 N其中
3 M6 i% m1 O$ J    word_timestamps=True, 7 q; r: u, A$ q3 W0 V7 V
保证了你能拿到 word,否则是拿不到的
" J! w- w8 @( m2 _6 [3 |. l( R    initial_prompt = "Hello, welcome to my lecture.")
1 R! I! ?  `' U+ d2 f* s1 u( g. b保证能尽可能准确的断句 punctuation,但是不是决定性的。/ f( t# R: s# e1 T- B
其他参数可参考源文件:
: X2 u, s3 I( L: P/ Jhttps://github.com/guillaumekln/ ... isper/transcribe.py
" g, X- G  R, l2 y5 m# ~& T+ ?) Z7 {: n+ K) J152 def transcribe(
( a+ ?; ^) ~3 ?, N& K( @. ^从源文件你可以看到是支持中文的句号断句的。
7 W/ n- t. n; J* ~, ^+ |
2 A; p! f. J& X' c3 v6 |6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。! d; n/ L7 d+ ^: j2 o
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
: t( }: R1 }- f0 X8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
+ Q3 J4 o, l/ v$ G7 g; G5 b
7 u8 T' m0 e# }2 j4 a . y) s4 l/ Y% B# a0 j7 T! E  y
' ]" {9 x& ~; m0 h# q8 P

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-10-6 23:20 , Processed in 0.054775 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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