设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
4 b5 v& Y6 m" ^8 O
8 w3 k! w$ d% j+ f' I% F' {6 o* P借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。8 A- z- `# d2 Y! j, i& Q# I
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
! M# K" r6 z) V----------------------------------------, K. k* x2 r# Q! u5 \' t
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
- N0 C% p0 R' g在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。- P; K) [# X: b# }
----------------------------------------
3 w0 O1 L" b' ?6 K# i1 f) Fhttps://github.com/guillaumekln/faster-whisper' S3 S- c( q( `) z
安装如下:
) R2 x; U, f6 X4 S7 g& ^% P8 m1, Windows 10
# R% e* {3 h) G9 W2, Python 3.10.119 `$ X3 J! i4 w# U+ f. h3 o2 I! ~2 {& C
3, CUDA 12.1
! n! ~: {( u' W4 p0 H4, 在python 3 中安装
0 N8 ?2 _! @) F$ {( x% y. \9 Z$ `% Npip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
) U# y$ Z* z7 P/ A! w4 m这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。6 p" G7 r7 _) Z8 ?, O
5,pip install -U openai-whisper; _( t$ m: F5 E2 |& z9 G
这是向whisper 致敬,可以不装
( [' N! x8 z1 O: O6,pip install faster-whisper. b% W* y' Z: w  a7 d
----------------------------------------
' f$ M/ L* E8 Awhisper 我用的命令行,faster-whisper 我用的是python。0 H/ |" t2 i9 J: X8 P  R
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:% t% V# n( d6 |( P
) J. }0 k5 {5 v5 a) X0 X4 e* e; y
----------------------------------------
6 F2 W( Q: k5 c
9 W( K+ A: U' f/ o# afrom faster_whisper import WhisperModel
8 c7 t. t! r  f$ I! |
4 d8 g! L" D) b$ Umodel_size = "small"
" G' j/ a% E% U' [, x: a9 k; i/ r! N5 o: K/ B4 z( b
model = WhisperModel(model_size, device="cuda", compute_type="int8")
5 H9 E, N5 ?, N
! A" O3 S* r4 \) p: Z, @segments, info = model.transcribe(
& c5 ]6 O* ^! p/ `7 C    sourceFileName,
/ N' r- H+ q% ]! R. x6 @3 C; X    beam_size=5,
6 i* K& x+ S! l6 Q( F    language="en", 7 e$ R+ {( T/ m5 W: V" ?/ P
    task="transcribe",
: o2 F$ ^5 J0 n+ B; o    word_timestamps=True,
; s4 S0 G- x8 I0 q6 S8 o- h# Y    initial_prompt = "Hello, welcome to my lecture.")6 ?! }6 ?% n% O  `0 Z! q

0 [, I8 R7 ^( F$ W6 M+ o' gfor segment in segments:( p, |; ?# x7 Z0 u& V! H
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
8 ^! f* b8 m1 p7 L6 ]
. O& }- |6 b/ f8 s# G        for word in segment.words:
" ~2 a! z( p- T: m' ^                - Q0 t" l$ m( @9 g
----------------------------------------
; k6 [- r5 Y: `7 v7 d5 L% a
0 {: b; m! z3 E- r. A% @6 r代码说明:0 ?  N7 a/ d) s# a; m. i
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。0 M% |9 T# L' P( }2 N+ n6 k
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
7 i4 e  k) O% l& c* ~* N2,segment 本身是很粗糙的,做字幕勉强能用。
1 B- B9 I; R1 M: T8 P; p+ W! w3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。, f5 R8 b( u4 `
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中+ c9 o5 W" V+ q- U# R
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
3 W5 F; O, B1 A# C) f  K$ j8 e  O5,model.transcribe 中参数说明:) {4 Y7 y! r& l# v6 g. b
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
3 U2 c6 c6 d+ u! M$ f9 b5 W其中- C) D7 y3 q: E+ l: R! v9 w
    word_timestamps=True, ! Z2 k- V8 L* r6 e1 s
保证了你能拿到 word,否则是拿不到的
3 [  Y0 V7 ~& p% Q    initial_prompt = "Hello, welcome to my lecture."): t& W0 S- A- ~5 X# r7 R
保证能尽可能准确的断句 punctuation,但是不是决定性的。
3 e+ O' F$ P% A) m1 E" c$ s- V其他参数可参考源文件:$ i) z6 ?0 ~2 p, P" h4 k
https://github.com/guillaumekln/ ... isper/transcribe.py) k% @( T7 ?& v7 e) ]
152 def transcribe(* ]7 y% L9 S4 \1 l5 c& U0 N2 S. e, Z
从源文件你可以看到是支持中文的句号断句的。7 Q' n7 b1 F* c7 z
' N0 f. v& y# g
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。5 E4 Q# {- e/ ~
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。& j8 T! U1 ~* @. ~
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。& S! X+ K% F7 S. a- D

. k2 j, k8 g& n8 w8 H( j , K% E: H8 e; G/ V9 p

/ z1 [2 k# r' e0 k' i* Y

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-2-17 06:01 , Processed in 0.036470 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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