设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
8 T+ D# X9 g7 A2 y# t+ P/ H* w4 Z! G/ J! S% \# G: j
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
6 O$ |  c: }- T# C* E8 w2 R% R! f效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。3 J0 W" T' b- c* i3 _$ r9 b
----------------------------------------! A, j/ }; B# r
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。( s( r/ ~7 g' s5 N+ {1 V
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
0 n: ?6 J- ^1 x----------------------------------------6 C4 [  M/ g& S, n
https://github.com/guillaumekln/faster-whisper
7 i/ G% R0 r) d( C+ Z安装如下:
+ J- b3 z/ w* J' |  I" g1, Windows 10
; b$ q  w7 D; X0 e# f9 I  O; m, o! n9 T2, Python 3.10.11
- Z* o3 Z% ^8 S* q3, CUDA 12.1
/ Z+ S. q. {5 _3 w3 `4, 在python 3 中安装. m) \' {7 @  h7 J- p# A- A
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
9 _( U  g+ N  T6 d这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
1 }5 d, U1 R% z5,pip install -U openai-whisper. n* f: R  D$ X
这是向whisper 致敬,可以不装
' P1 w- @/ }( W7 V9 G; i6,pip install faster-whisper0 s8 f) ]7 `+ M, z& `6 U1 c
----------------------------------------* q: V* T3 c- x2 K
whisper 我用的命令行,faster-whisper 我用的是python。. u7 ?  {8 Z. P
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:8 H7 K- h, J4 i! N5 K0 u
* q* M* ]: x% a! y5 x9 `
----------------------------------------
' z) s) C5 S2 _" r& P' a+ @; b; f7 K" a" K0 Q$ @& t
from faster_whisper import WhisperModel2 f) l( i) g. D* ~- p$ `
$ G$ B0 ]9 l' ^
model_size = "small"  @% g9 `4 L2 T# u: D* f  J

. H$ l: D' f& m% J- ^+ z! }model = WhisperModel(model_size, device="cuda", compute_type="int8")- J! U0 K2 j! R9 a  N" u
2 E, ^4 [7 V/ |$ A' q8 t
segments, info = model.transcribe(4 X7 Z$ \- {* I; n  F9 \- d
    sourceFileName, 0 ], q1 U+ R+ e; G0 j
    beam_size=5,
" A' e3 M; s2 u1 L    language="en",
% @/ f0 M% r, r1 r% F7 P    task="transcribe", 9 u3 `2 r8 j% u7 z
    word_timestamps=True,
' U; t5 z; `0 h4 l    initial_prompt = "Hello, welcome to my lecture.")& V0 ]% B8 ^1 ^" X
9 u- r& v" H2 h- O! r% ]* s
for segment in segments:7 s5 H0 \% x6 T- `6 y
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))& E- _) N% T5 i- t- K% l
1 L5 G! r* E, ?
        for word in segment.words:% z# H2 c; {& ?6 R
                5 K0 `& }6 I! K6 Y, D' J
----------------------------------------
% [/ v0 ?3 [* |# l7 B
  [- H/ B& C" S7 m, R3 P代码说明:, F8 X6 A8 O8 [# @6 J! ]( s
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。- M3 }6 E  [1 m" k
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
$ R% _: j. k' D! ?  v5 S: j7 T2,segment 本身是很粗糙的,做字幕勉强能用。
' G4 c7 T& H; v3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
# n5 I7 I# D3 E& z, a1 j4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中. E2 @- u. d* U/ U: G0 p
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。- w8 |$ Z7 {% j$ @7 V5 j0 g  y
5,model.transcribe 中参数说明:( b, W! N) K; E6 Y! z
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
4 s/ ~0 B5 l" ?( Q+ Z其中
6 {1 ^# g6 d! e    word_timestamps=True, " p, z! K' |( @1 u
保证了你能拿到 word,否则是拿不到的
/ L# v7 k9 }- v  ^* o6 s    initial_prompt = "Hello, welcome to my lecture.")
) a8 X5 u6 M0 t; B保证能尽可能准确的断句 punctuation,但是不是决定性的。" X1 H- f8 V  T- s0 ]' P
其他参数可参考源文件:
' a0 U8 V, X7 _% d' Phttps://github.com/guillaumekln/ ... isper/transcribe.py6 k8 l0 u. S- O1 Z% H
152 def transcribe(8 }' e" B9 ?* J2 C
从源文件你可以看到是支持中文的句号断句的。
0 b! n) S' i4 y! Y  m* Y% Y4 q7 N+ w& |8 Q1 r6 d: W
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
, v, ?' G/ T9 O; B7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
6 d& H& e- k* Q& B( u! h5 C! v) o' Y8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。% o' p/ N2 V! T. q

9 Z6 {3 q5 q$ k& o0 a
5 \) d2 ^5 `3 N6 P5 F5 J& T6 A- d/ b

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-6-14 23:39 , Processed in 0.055596 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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