设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
5 O: O' k! h6 |4 J. B3 z" J) \6 b  V( ?; ~" [/ c. V7 W
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
- F5 A) A2 I' R. u5 z效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
" B2 N* e1 z) ?: L----------------------------------------
8 Q) O' e/ e) W0 v- j( B显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。* _; n* V/ t% b/ N- m  w9 j
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
  z# e; N1 L6 x- ]+ R  G! u* B  F/ P. f----------------------------------------
4 L% p0 k9 @7 T- z* J+ nhttps://github.com/guillaumekln/faster-whisper
6 l$ C& h5 H+ V( T9 c3 G( X( ?安装如下:5 h2 a! w, ^# b2 e+ V) W* R& W/ p
1, Windows 10! @2 z  g2 ?# j! }
2, Python 3.10.11
0 E4 Z# q$ w: c- k7 f) n' p, A& ~. ]3, CUDA 12.1
" [2 V* d. c  Q; G* n: I% l% U4, 在python 3 中安装
0 T0 G; L6 ]% L4 E# b5 d/ |pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
, r8 X( p7 T2 {! _这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。( |' {5 m) M- A+ h; _
5,pip install -U openai-whisper
+ H# a" x* ~' S% |( F这是向whisper 致敬,可以不装3 s% r, h) O0 Q# t
6,pip install faster-whisper/ R8 O( u! m( y# y% ]. v
----------------------------------------* b# f7 Q& @- s4 w" ]
whisper 我用的命令行,faster-whisper 我用的是python。+ C$ y! y+ f  ^/ a- c; h% u& T
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
" t; d0 I* d: P! k; f4 W
8 G  A: a4 a$ c* U, G% H) {----------------------------------------0 l- k8 y4 z4 ~& Q4 k5 {, A
* b. |( a0 h" V/ ?7 W6 |
from faster_whisper import WhisperModel  d) F2 I% N" S

" }7 ^) E) @( a8 Ymodel_size = "small"
. g& r+ E' O6 ?  o8 @, Q
5 \3 M! @: W7 J) A/ t1 smodel = WhisperModel(model_size, device="cuda", compute_type="int8")1 J1 b( r  Z% n* J1 t' `1 s+ h

: l* E: b# `9 R! V& C! fsegments, info = model.transcribe(- z9 x: z. U9 W$ n4 i6 z
    sourceFileName,
. U. O1 c9 ]0 W  e% C    beam_size=5,
1 U5 P1 l& u% x; q" x8 {0 n7 b  E    language="en", , ]; U9 H. t# v/ ], n
    task="transcribe", 1 g4 r, s# y$ D: _1 J6 L- G
    word_timestamps=True, . `" m, H- x$ i6 J  n
    initial_prompt = "Hello, welcome to my lecture.")
' s. R4 u& Z; J. a+ U6 c$ ?$ q* _$ F+ x
for segment in segments:& E# v1 H5 }% U
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))( ^8 Y) F  D' a; q$ R3 T+ T
% U4 |9 E( ]6 O6 S/ Z# ?! o+ _
        for word in segment.words:
) f2 A5 Q) w; y- o6 ^' H0 P               
" |% z" U+ J, {9 \6 w7 c! g----------------------------------------  j7 H4 [# U8 {6 \/ }& s
* q+ ^5 T: e; V
代码说明:
; {7 I# y7 o  z, q1 I- ]1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
: t4 K9 @& C* c9 c但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。4 R& }* X8 r) W% q" T6 ~" _9 o
2,segment 本身是很粗糙的,做字幕勉强能用。6 j% y# |5 T6 g( y6 ~, R( Q
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
: V1 r& L. v6 e+ I4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中! `3 r$ p# r1 {4 \6 [- `/ S5 ?
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。( T! g, G6 z) w1 Q# H. d
5,model.transcribe 中参数说明:4 l6 n. P! R/ V/ q
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
' D" B; _' ?* o% q% T. i其中& g# L- R$ _/ ^+ [, ?! _; y7 v
    word_timestamps=True,
6 h( @/ \: [$ }. D& Z保证了你能拿到 word,否则是拿不到的
: |. G- W9 E( b$ f- O! @    initial_prompt = "Hello, welcome to my lecture.")
) B  l, q8 D: @6 [1 i保证能尽可能准确的断句 punctuation,但是不是决定性的。" b/ A# h9 k) r* `6 q3 G4 Q7 S
其他参数可参考源文件:  b) J* h* X2 b( R" I
https://github.com/guillaumekln/ ... isper/transcribe.py8 z$ I- D: C1 z# X( A4 B
152 def transcribe(
/ B0 x4 s) q% o+ P从源文件你可以看到是支持中文的句号断句的。- m: r$ T1 x( P, {+ P3 i  Q2 r

) l8 V: n* K( E/ O2 x! I6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
/ m7 e3 V9 @$ Q$ K1 w7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。4 y4 f' x3 J: o' r
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
0 G1 R" z5 _7 C4 x5 e  n8 g* d( q4 K4 v/ d& C3 P. ~$ a7 m
6 Q& ~0 u7 L: a$ h  J/ W7 K
+ }! A: i5 Q  c" ?0 ^

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-2-22 23:07 , Processed in 0.031844 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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