设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 1 _9 F/ V( r) h, J$ {
8 s' x2 K- q$ S/ Y
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
/ y; y7 D$ C# L) W/ h效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
. D: A+ }; H% }$ L8 {, L+ j----------------------------------------
& ]- B% H2 A+ F) q' ?7 H7 _/ f显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
8 {5 S/ g2 h7 x$ Z在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。/ I1 S0 j4 q5 V* Q# p
----------------------------------------: v- h6 J3 E1 r! o
https://github.com/guillaumekln/faster-whisper
7 p* i+ I& M9 E& u3 o安装如下:
/ M) G# b! }0 _1 ]5 g1, Windows 10- N) T6 k- ~0 e0 t* R" @8 }# T! }8 ?. y
2, Python 3.10.11- j: ^* o8 k# a3 x
3, CUDA 12.1) Q; J! n9 ~- L$ ]9 D4 w6 A9 G& D
4, 在python 3 中安装
; Y/ Y, P2 }5 K- q) F( d% Vpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
) K; {: m$ ]4 u这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
. t* }+ c7 F! E( q5,pip install -U openai-whisper
# M3 h1 q  G) q3 u- G这是向whisper 致敬,可以不装: f  d+ ~( J7 Q
6,pip install faster-whisper
" _; g. w1 G( I! ?----------------------------------------3 a* B: @8 Y( h/ {5 X; F
whisper 我用的命令行,faster-whisper 我用的是python。' F7 {% T+ _, ?
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:/ W4 ?: a9 E( T1 k# e3 E1 m% y
) E, f$ [  w  i" B; u
----------------------------------------( O/ b) `, ?. ^1 F& G( b' U

! b% n" D8 P0 o8 o# Sfrom faster_whisper import WhisperModel
- L0 z$ D! E/ a/ Y  R' P9 c3 L7 n! W7 d
model_size = "small"
& L' ?5 g0 b( V! y/ X5 {8 Q4 {* ~2 \" f. ^; P3 \
model = WhisperModel(model_size, device="cuda", compute_type="int8")& U- V, ^! ^: i* t0 ]

! d% o2 H- i+ C. @segments, info = model.transcribe(+ U2 V' e! t9 U8 h$ y* I- L
    sourceFileName, ) O! u% Q8 u# H- d7 t
    beam_size=5, 3 ^- Q+ ~: F, ~) w# A
    language="en",
; Q6 J* g9 `0 X7 W. M( ~    task="transcribe", 8 |# J2 B9 g7 c3 f
    word_timestamps=True,
, F1 B; d6 L  _4 |1 `  X1 h    initial_prompt = "Hello, welcome to my lecture.")
) H7 E* V! [" Z* Q: o: D5 Y" v5 S1 A6 q" E( b9 c
for segment in segments:
- \7 h1 a! T# |7 {8 q9 q; u    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
( O- y, b! r: a
; H1 H* x; |+ l- c        for word in segment.words:
6 C) a. {! \+ K4 B6 w0 X                3 P6 c6 e) \) z, @, W* g4 i
----------------------------------------. X4 E# Q( ~% a# c2 `7 u

* P7 r* m2 D( b2 T0 s代码说明:
; }8 P8 Q( ^9 a6 P9 l, y1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
! y  A8 F; O' L3 r( t但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。( u+ v, _5 H- o) N" a. O& }
2,segment 本身是很粗糙的,做字幕勉强能用。5 t# \" U6 n# U- W9 s6 t: u
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
: H5 D2 x2 y- e4 m) ~5 I# ~# h4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中% @9 ]; f' w/ R" b
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
, I! D$ _1 k( }$ h3 w+ U4 d5,model.transcribe 中参数说明:
# B0 d4 m0 n* K/ [% I4 N8 A你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数" C/ {! j* m+ o+ Z9 e
其中
6 f/ k/ w: n: _2 i4 z5 o. ^8 {3 m' S' j2 b    word_timestamps=True,
! Y( B# A: S& P% t, q7 A2 _# ?保证了你能拿到 word,否则是拿不到的
/ T2 C( V5 m, o8 l+ @  u    initial_prompt = "Hello, welcome to my lecture.")
3 b: N" x8 ^. r; l2 F+ Q5 q保证能尽可能准确的断句 punctuation,但是不是决定性的。; y7 ^0 K% q) P: u% v: C
其他参数可参考源文件:0 ^8 n+ E4 }! Z1 O( o
https://github.com/guillaumekln/ ... isper/transcribe.py7 }1 p3 |$ I8 o) J6 Y
152 def transcribe(
+ b: K' g' d9 @1 J0 z9 S; u  ]从源文件你可以看到是支持中文的句号断句的。
! @6 ?1 f* H0 c% y/ n& ~( W& I0 q" e9 O# [
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。1 K5 }  V, d& e! p& [- S' I) K
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。4 {+ z9 X9 U) Y) l( _3 x- h+ c* O+ `
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。* C$ y8 S5 u& f3 ^

1 m0 l  f& K* Q7 f, L + b4 O5 o' \4 J6 E* a) B$ N' _
, z$ p. x" Z5 H; h, c/ Q

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-3-12 02:05 , Processed in 0.052915 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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