设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
* x" r' Z3 J! y7 s% R0 ?. }
& w+ B2 z8 o) z借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。) z  G1 `7 g8 A/ [3 d  d
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。4 k! B; {4 E# y
----------------------------------------
$ G  E( Y' V# G8 M$ d& _/ y显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。, i* d# E6 i& J' W2 L) |1 {' S0 B4 m
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
4 _. d9 C. d! t: j----------------------------------------
! \+ @7 f) j& s! U. S( Jhttps://github.com/guillaumekln/faster-whisper
) m8 w( V4 `# _  Q4 ?4 L安装如下:
6 j2 ~) I/ X7 v- K1, Windows 10
' J/ Y( [& i( h8 Z0 U8 }5 D2, Python 3.10.11
  k$ g2 u; s. m$ n7 o# `3, CUDA 12.1
2 k/ U1 W6 x3 C: B- g! b4, 在python 3 中安装/ o) t+ B4 Y6 I8 `8 r
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1172 x; ]5 _1 E( b" H& i! W
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。. d; y; A9 Y% p  h8 T# e
5,pip install -U openai-whisper2 z" _/ g! L0 P; k/ y9 S5 n
这是向whisper 致敬,可以不装! E8 x6 Q! P- k& M8 B/ {
6,pip install faster-whisper( @- E7 F! ~0 @5 |3 ?  M
----------------------------------------
1 I- c+ u0 W# k/ `" X' C, l. qwhisper 我用的命令行,faster-whisper 我用的是python。
4 X8 H+ t: E8 _9 v7 k1 e( y( t! K! U下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:/ P) J& C* |- J+ g* U2 \$ W  O
4 `2 K" I! i+ ?
----------------------------------------
$ r( h" u5 |+ _8 \2 k  R! T; d3 H+ J, N' S# W* |/ |$ A5 r
from faster_whisper import WhisperModel
2 m, X" j% J9 m0 {% K5 p
3 S. |+ @4 j* s3 O  ~; }model_size = "small"
/ P, o- G0 E! N( d$ |
: G% S) C; Q5 f. ~( ^  Emodel = WhisperModel(model_size, device="cuda", compute_type="int8")
. R1 ]# ]# |! z" G0 b# ?
% Q4 p6 a3 z9 `2 D2 i# Z. esegments, info = model.transcribe(
. p5 T" H) k7 z    sourceFileName,
, N) o4 C# b2 _5 a3 {    beam_size=5,
( Z% I2 L* x9 Z# z    language="en",
8 x4 r3 U: c% M& L2 w6 ^    task="transcribe",
$ T  I4 Q" `2 v4 S) S. k    word_timestamps=True, , _' g( U6 s' `$ ~  p8 J  ]
    initial_prompt = "Hello, welcome to my lecture.")" |1 y4 P$ |' h( u, h7 W  D

. y6 ~+ H9 P* yfor segment in segments:
6 _0 F; n% e8 e9 Y    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
0 U2 @# }8 m: f- z0 {5 r0 F1 ~' x0 `, r" N
        for word in segment.words:0 m( w% I# u" c! z
               
  \1 J  O* l' n2 d! P----------------------------------------
1 y) [( V, u! R
" B' j3 i/ h- y7 c' ~  h  A6 }代码说明:& y4 Y, s. p  m
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。# ]2 I8 M7 W( j0 A
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
' }8 E3 D# R7 x; z( ^0 }2,segment 本身是很粗糙的,做字幕勉强能用。4 O6 T- U# ]# g/ B/ E
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。  ^. {. K* M$ [5 N6 u
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
- e4 u& ?2 T, E9 d+ A比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
  v2 n& U( k% o0 c% l2 @5,model.transcribe 中参数说明:; x/ f& [/ V! c) e+ ?
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数( V  \$ N8 c2 Z$ g$ N
其中
9 i1 Q5 ~1 R- C    word_timestamps=True,
- E' g# w! I, ?( i& a保证了你能拿到 word,否则是拿不到的+ ?9 m2 ^6 u: I2 L3 U/ j
    initial_prompt = "Hello, welcome to my lecture.")5 k! o: M; `) y
保证能尽可能准确的断句 punctuation,但是不是决定性的。
  D8 f5 G" i- [$ o" h其他参数可参考源文件:: k9 K( N+ a3 Q% b- o
https://github.com/guillaumekln/ ... isper/transcribe.py
6 I5 O$ ]9 i; }+ |8 }, r9 s152 def transcribe(
" I- D. `/ k9 U9 w, o从源文件你可以看到是支持中文的句号断句的。' V( p7 ^3 A/ }, A

7 d# q) {" S8 j! h7 w6 U6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。  M, e3 M' ^% i6 V
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
7 ]# I. J# C/ [8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
! ]; Q/ U5 Z, p6 j5 Z- G. i# h3 U6 I! _% A9 y5 C0 P

7 _* c% A: h- c# {1 @9 O/ A& T1 W
; l+ Y- t/ U- c' a

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-8 03:36 , Processed in 0.056467 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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