设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
: ?8 s1 V: k3 {/ m2 N
" P( l' [7 Y" }+ x3 s+ K/ a. A' o借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
$ X5 ]1 D3 y* g效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
) b# S, j/ y  `& q----------------------------------------' G% e* f8 Y: q( J/ T
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
. \# d7 I! Y/ g在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。* {& a4 [' x; e: v0 _" T- Z$ P
----------------------------------------
9 C- E$ o4 f4 B  W2 g3 ]) U  ]  nhttps://github.com/guillaumekln/faster-whisper: h1 k3 {" x# q% {
安装如下:
! S7 i$ M/ p7 y1, Windows 10% y( {) r$ O% W  U  }, R
2, Python 3.10.11
4 p  Y+ n3 f0 p: G3, CUDA 12.1% e. _; i; J" w* E. [* B+ w+ m
4, 在python 3 中安装  Z$ a( H; z% J* U0 c
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
1 m$ G$ c  T8 A+ r. z. I这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。4 D0 q. J% e- \% X" A9 z1 N! l5 E
5,pip install -U openai-whisper# k7 a4 o8 s/ {* d( B& K
这是向whisper 致敬,可以不装" k6 y: x) |, Y7 f
6,pip install faster-whisper# s$ j' }$ g* m/ R
----------------------------------------
1 u' Q, ^$ n" X, I0 vwhisper 我用的命令行,faster-whisper 我用的是python。
: i/ ~% }, d" k2 N# K下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:/ Z4 A9 F* N. W1 L) r# b
0 S/ h  D+ d9 T; l- C! Z8 z6 I
----------------------------------------7 [' r- q5 K+ G! Q# q1 ~

2 n* V- j4 Q8 F! f3 Z: k8 _+ Afrom faster_whisper import WhisperModel8 |2 i. Z# K* ~1 H$ J/ R9 f
- ?* R. J, N( v; q& V
model_size = "small"5 L, ?1 ^: u+ E
% I4 q* ~1 m! ~) r2 r$ w
model = WhisperModel(model_size, device="cuda", compute_type="int8")
& u# b) g/ B1 g. E5 R. ^; E& |, D# I, X+ A# K4 y& X
segments, info = model.transcribe(4 S( n6 c! o7 p: R4 j: r
    sourceFileName,   c; g; K1 C$ K4 ?5 N
    beam_size=5,
7 a0 u4 ^0 Y+ w+ U  [    language="en", 8 z; n" t; j9 l% c5 O6 X+ r- J
    task="transcribe", 4 v) I6 U5 J" D+ h( }
    word_timestamps=True,
- {& |, E3 S" ~) }( N    initial_prompt = "Hello, welcome to my lecture."): n8 f' r( Q3 U& W# j( d
% o+ ~$ B# X5 U# s: B/ M  D; V7 z
for segment in segments:
% H+ }1 o3 s8 }# N" I    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))- p* J* z. i, S$ \& W9 m9 }
  G, P& G& ~4 k: q
        for word in segment.words:; }; p, u( e+ u( h# a8 t
                7 T8 k3 i" w+ e* r) ]. S
----------------------------------------6 ?8 `' T/ Y: f3 b

" k$ Y: B1 z; S8 N. T% q& C代码说明:9 ^' L& [6 F7 d# N2 M, H- x3 d
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。) ?0 i& A$ P, C5 h: x. ]! Y
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。7 r- K3 ~7 _) m+ d* a0 m  C: I  ^
2,segment 本身是很粗糙的,做字幕勉强能用。
, @% t( f- ?0 U+ D$ X3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
, M1 T! X% ^1 m2 h4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中; w4 a: i6 }8 h0 i0 M0 @
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
* m5 d: V5 F0 v7 _3 v- x' L5,model.transcribe 中参数说明:
/ m! c' F& h: _; J4 G/ U- a& |9 s你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数- P5 W; G9 v! N
其中
% ^2 o0 R+ w" P% L; ?4 o+ M7 h" ^    word_timestamps=True, . ~7 ^. w9 ]  ^
保证了你能拿到 word,否则是拿不到的
; I6 q# l: c4 `/ t$ L5 d    initial_prompt = "Hello, welcome to my lecture.")7 l* J& T1 }' [4 {
保证能尽可能准确的断句 punctuation,但是不是决定性的。9 {8 b; |" T5 x! b/ U7 b: ~3 o9 @! D
其他参数可参考源文件:
/ w6 Q. N7 m1 U1 F  h( zhttps://github.com/guillaumekln/ ... isper/transcribe.py
3 g, |/ U: ]$ E( h152 def transcribe(2 A0 e* X" Q, J7 [6 ~" K% |# E
从源文件你可以看到是支持中文的句号断句的。, W+ g$ h9 S9 i3 l0 R
) \- s7 P; s& Z' L2 n8 m
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
9 ?+ n/ S2 w8 ?' F8 p7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。2 ~( N, N' w/ |0 b" u
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。+ k/ {5 c, c5 d

, M' D1 [% }$ k8 {! z3 X . \( f7 n! K0 ^

3 G+ Z. _, ?! r! A% C; y' Y# L

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-1 11:48 , Processed in 0.054816 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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