设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 1 M% u7 c' C  G5 d, Z1 f' ^

' |! [$ w- g3 b' }# v借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
, O1 l, V/ x  @" m* ~, u7 v效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
$ s, o9 N( Y, ^+ ~& T; |% E0 c----------------------------------------6 _, I7 G8 t5 i3 [; c6 z  l
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。9 ~- I& t* |6 f2 V
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。6 `2 D; a5 J8 j& P8 w
----------------------------------------
, }3 q% W9 N$ |6 K$ ~$ a; Yhttps://github.com/guillaumekln/faster-whisper! H  C' F9 \* K1 Z8 z" B7 r
安装如下:: ]3 M% T. q7 q. n6 F$ F, L$ v  |
1, Windows 10
. P- H; L( l1 B! F0 j: F2, Python 3.10.11
6 i2 q  l( ?4 d& {7 x0 Z5 Y3, CUDA 12.1
2 J- z9 W! V) y. y% r4, 在python 3 中安装* \8 F6 ]3 ^" H
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
  B) G! U  Q5 u* l4 L这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
* q* {: ~; x6 G" t5,pip install -U openai-whisper
$ @7 K: Y8 b9 r5 M2 W' M' T这是向whisper 致敬,可以不装, P; X9 @( M1 g/ f& m0 b
6,pip install faster-whisper- z+ J4 W! Z; o8 V; H1 R5 T* k" o
----------------------------------------' D/ o0 e; t$ F: V
whisper 我用的命令行,faster-whisper 我用的是python。
4 a5 Z8 t' V9 n7 ?$ y5 C下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
' J0 @: n: L2 h3 n5 N2 t7 {  W9 Q' g. f
----------------------------------------# u' m, N' p% f/ d$ P

# H- u6 I2 c" J! z6 }1 efrom faster_whisper import WhisperModel
! o6 G; B1 x. m* a/ G
3 c# M" U  D4 W/ ymodel_size = "small"; Q2 A* ^! E( R) v2 J: o

: t0 g3 c  ?8 Tmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
* N1 h3 o% Q& V& n4 Q" Y
9 y& d* ~# r% {segments, info = model.transcribe(
, X4 G, U" p8 U% ]    sourceFileName,
2 ^$ D) N- O6 I- {3 c  {7 z! a, S3 F    beam_size=5, 7 g) n: B# f) q# n
    language="en",
" u# k% }% W: g( F0 I8 w5 g- h    task="transcribe", 5 j' \$ D# H0 n. [. r1 y
    word_timestamps=True,
  [  t0 H2 w* S0 P# k) N    initial_prompt = "Hello, welcome to my lecture.")- |; j8 q7 U: u1 r8 k
  n( q6 I' |9 |' u- c$ n
for segment in segments:
- y0 G4 v; L3 _& b+ n( s- a( e  M+ @    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))1 H, a3 ^, r7 ], r
/ q7 }( h$ l5 \  I: g
        for word in segment.words:; X, N$ `+ o4 I7 X% Y+ N) }. m6 c! y
               
3 p. v  m8 O6 I- T6 r; D----------------------------------------3 s2 z4 [) B& ~$ d* S# C
. K0 C% c1 M6 ]7 f% A+ s
代码说明:7 h7 R4 B5 y1 d& p; [
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
2 x  v+ Q1 H. `2 ~- Q3 c9 Y但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
5 u  u% W, `* i3 `) t7 y, D" Q2,segment 本身是很粗糙的,做字幕勉强能用。6 x2 ?! p' u1 Z( o1 M; N* W( }9 j$ F
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
2 a1 V: w5 a6 j& `. m- m6 U3 o5 _4 s4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
9 {2 y0 p6 b8 V  h7 n' N# ~比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。7 T. @0 Y4 M9 p4 ^& X6 H1 Z5 f
5,model.transcribe 中参数说明:
5 r  }* n8 y( z6 ]! b你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数  N3 B% }& e8 x7 k* W
其中
8 }1 k$ y. D+ @    word_timestamps=True, , Z4 Q5 @! M. Z8 f
保证了你能拿到 word,否则是拿不到的/ Q) f3 i: |* |, k- O3 Y. G/ C
    initial_prompt = "Hello, welcome to my lecture.")4 C' m) U' W/ J: @7 @* I5 R
保证能尽可能准确的断句 punctuation,但是不是决定性的。
3 {/ S1 ~: E% e* J其他参数可参考源文件:
; a1 q  `3 l; V( ~* Z. khttps://github.com/guillaumekln/ ... isper/transcribe.py9 }' Z  n, Z4 I. ^
152 def transcribe(. B9 f$ }, ^) o/ C( G, G
从源文件你可以看到是支持中文的句号断句的。
( e7 h7 c6 x$ W  i1 B7 V
' x* i3 J8 v+ U# ^/ v0 L- x7 I6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
, n1 E- d- A: d7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。) k0 U3 Y' p$ u7 E* o9 P% B
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
4 g2 f4 Q4 H/ L' x7 [! z0 r9 c3 {3 Y' O* a# o# e$ A, _' k5 F

! v4 s' j' D( @$ W! |
  d# L5 T$ Q3 i9 [7 O: ^

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-2-7 15:11 , Processed in 0.060348 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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