设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 $ J2 v0 ^7 G  `; ?8 h0 h1 K( L
% A: I$ g4 ]; n5 ^
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
8 A' p: i% S, W* b1 [! [1 N效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
- V  \+ C( F- Q+ o$ Y+ f' x----------------------------------------% O( ]" q2 X3 {/ ]0 N
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
' W' v* x( C  \. p, k; t3 l; a在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。/ o" d8 }$ |+ V& J
----------------------------------------
# D1 ~' a. \6 e, W2 E1 }, [https://github.com/guillaumekln/faster-whisper$ T8 e# P1 {% V
安装如下:
- Y1 b9 H; ?1 \4 u. i6 U1, Windows 100 \! T% f" `2 u$ {! [* _, y
2, Python 3.10.11
- r+ z. k0 ?- y. Q1 C3, CUDA 12.14 S! \; {5 s: [' a( S  W: g3 C
4, 在python 3 中安装8 M! D5 l& ]1 ^* }
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117( v! g6 E: I0 U. n7 C
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
$ R) |/ N+ r+ }# ~& H. X; e% v5,pip install -U openai-whisper
$ ~2 d' \6 j4 }. J2 R5 G" v这是向whisper 致敬,可以不装7 m! l7 r' O, r5 z
6,pip install faster-whisper
/ J$ ]. v6 H+ f' P9 H% h----------------------------------------6 F2 Z# U; g1 [2 h, W) N7 |
whisper 我用的命令行,faster-whisper 我用的是python。
$ j& A4 b3 K; i3 D7 r下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:7 m5 c6 O, \4 d+ ^& m# S6 O

6 G) ~6 X0 w; Y  p1 A) \----------------------------------------
6 F( J( q, P' l  L! {2 @" P6 }' k$ }+ [1 [5 F
from faster_whisper import WhisperModel7 H% N5 z! z; f! T/ S0 Z$ t* u* i
: c+ q7 g( c! k; a
model_size = "small". X9 o/ T. h! m3 j- P8 Z8 O2 P
# H' j$ F; h, c! `0 ?4 ?8 }
model = WhisperModel(model_size, device="cuda", compute_type="int8")
' s2 U7 R( g$ n. Z
, b4 F, K/ h* x- p2 [segments, info = model.transcribe(
; W6 f' }. x  l1 \    sourceFileName,
+ Y& j4 l! E) z! y. a, z* F    beam_size=5,
3 B% Q7 J1 [0 v    language="en",
1 v, X' v9 X9 J1 z/ H) K3 Y    task="transcribe",
; Z/ k. S) H0 V% P: `, v" y- j    word_timestamps=True, : T. b$ C! ?( D+ v$ c
    initial_prompt = "Hello, welcome to my lecture.")( z% p5 Z. S) I& `5 [- u
: F* P5 N! ~. K
for segment in segments:0 N" r$ l, `3 a2 m: q
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
, e! v, a1 y: {, c' Y; u1 N5 p# W' d! @% ?) Y$ [) ?
        for word in segment.words:! p% m; M% _* v7 a
               
6 ^( u" M8 y$ L! P* p0 \----------------------------------------
1 C- t, ^# e2 r' }' p
2 l7 w9 s; v5 ]* U6 j) }- Y9 n8 t$ q代码说明:
, l# T& Z8 o% M1 M2 X5 d7 j1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
; U& D' l  X4 v0 u- }但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
  `; |8 j; d' W$ O& ?  g; n! d2,segment 本身是很粗糙的,做字幕勉强能用。
: L0 A' j# D) }7 U3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
: s7 k, z! P' O; K4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
3 [3 q8 Z) H; Y4 p$ r/ m; ^3 e比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
, U1 `7 Q, C4 p! c7 a/ F" ]5,model.transcribe 中参数说明:
1 F1 r" c0 I$ c  k/ ^+ c9 A你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
; @! @: X- W: _0 d$ {其中
5 w" w, `: V. Z1 x. M    word_timestamps=True, 6 T3 Y8 e/ P, k% y
保证了你能拿到 word,否则是拿不到的
- K4 ~1 k2 U6 D7 j6 ~  {    initial_prompt = "Hello, welcome to my lecture.")
- V+ U" U; E/ |9 j& j; a保证能尽可能准确的断句 punctuation,但是不是决定性的。- J& [. e' i% P& d( p/ f, [# ~
其他参数可参考源文件:& e6 }8 `+ I6 C
https://github.com/guillaumekln/ ... isper/transcribe.py
& [1 M/ I4 G7 m/ Y) n+ p, k152 def transcribe(
, R7 R" h% z+ m, s- q! ]从源文件你可以看到是支持中文的句号断句的。4 z. x0 p5 @. Y) n+ G& a

6 I  N2 a: I- T$ R" q" p6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。# w! x4 @! F3 F# @4 Q# c& r  g
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。" V* U6 H5 @3 I
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。" F% e$ L* @% s2 F

) J9 y" T: ^' y0 q$ y, l
' G% d* T' x  Y% T% ^2 A7 m. E$ H) q3 s" D( R$ p9 B

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2024-11-26 04:05 , Processed in 0.034847 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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