设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
5 O, O, R( w1 D. F+ h3 B) Y. R' e0 D+ c$ u' |/ x  z
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
9 L/ ?5 S3 }$ o$ [( R/ D2 c效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。) k2 q" O3 o4 s3 e/ g
----------------------------------------
9 A1 u+ g- e& N5 Y9 L- P显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。6 H2 c! ]5 e/ G8 q
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。- f: v! f! H4 `2 S$ ?2 i2 j& j
----------------------------------------
4 c3 D( K9 g6 ~+ _6 lhttps://github.com/guillaumekln/faster-whisper
$ j, _% h/ r/ O4 m3 i# r4 ?) T安装如下:$ J! ]5 F6 g! Y1 Y  h! _6 n
1, Windows 10, P2 ]: Q+ t2 R1 _
2, Python 3.10.11( k( O; G8 G5 ]2 ]* |2 |
3, CUDA 12.1
) `4 X: P) O5 M4 x8 i! q4, 在python 3 中安装$ {1 X& f8 i6 ~" b: ^
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
2 h* q/ k3 ]3 X8 z8 @1 o& t这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
+ L% n% X! r) d, t. F" a: I$ \5,pip install -U openai-whisper
9 ]# D7 k9 i5 |- b& r' l# J# P这是向whisper 致敬,可以不装( l  y  }" F3 k4 {
6,pip install faster-whisper( S5 q" H( x* x$ U4 l; G" s2 E
----------------------------------------
0 M6 B5 C/ v7 y1 J* v' Y0 T6 ?whisper 我用的命令行,faster-whisper 我用的是python。
0 Y& k3 d  G3 i* X; o/ `% v) C1 v下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
; Q5 D( h! M" D8 L4 _5 K% {6 L0 O/ H* b# U5 o: ^
----------------------------------------
1 M0 Y5 \' |4 F
0 |" r, |! V/ v+ ~8 A- Ifrom faster_whisper import WhisperModel6 Z6 p+ O" N. l" c6 H! f3 J

  k# s0 f, t) ?% Ymodel_size = "small"5 v8 `( a6 e+ p+ Z/ K) f) \7 T

. j4 w6 P" J( X/ y. _' `* L; f  O) Rmodel = WhisperModel(model_size, device="cuda", compute_type="int8")/ `# [: u$ ?; S5 P

( _  W; h' |( H  y7 }8 ?6 L% |& Osegments, info = model.transcribe(
& ?" X% q- X. E* ]3 Y+ M    sourceFileName, 0 w9 d. \9 _/ S# l% ~* x
    beam_size=5, 2 H0 ^3 ]: y1 q% R, H0 _
    language="en",
& s. @0 \+ ]% F6 v; e0 b8 q    task="transcribe", 1 N) \, s' |% C3 Y1 T: }
    word_timestamps=True, 2 Z7 k: f" U/ p: U7 L5 ~
    initial_prompt = "Hello, welcome to my lecture.")& i' {& l3 C% J5 }
; {+ U; B( g% I' t7 l$ x
for segment in segments:
. n% Q& D4 i/ J% o: r    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))/ F0 J8 V# k- |# y
# @3 Z$ q6 o$ P# K7 a1 x( |+ d% e
        for word in segment.words:4 w% x' R; F8 Z5 `/ a9 F1 _
                + H: r3 X. z; J1 L, }
----------------------------------------
! O* A/ {) \4 Y, Z; _
# P# x+ A: m/ i2 p' i代码说明:
. V0 [1 Q: G2 p' q1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
5 Y' V% Q  x/ E2 N% o, w但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
* ?5 L8 D% R/ B& z2 {$ {2,segment 本身是很粗糙的,做字幕勉强能用。1 M& I% K7 T8 x, ~7 ^
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。2 w4 _7 v: a4 ]- M5 P/ N
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中: M5 p9 I# Z% L
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。* c$ i5 r/ H  a3 c
5,model.transcribe 中参数说明:0 l: J& v. h: U9 e- p3 {4 t8 ?: t
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
2 c8 _, l* S0 `/ O) W0 A2 d其中0 y, \8 D+ y$ k$ u6 t6 Q
    word_timestamps=True,
% \$ A8 g* F6 y: |保证了你能拿到 word,否则是拿不到的9 b) \8 L5 j3 \/ I2 f! A7 H/ f7 i
    initial_prompt = "Hello, welcome to my lecture.")5 P  W4 a/ D: l: @# P
保证能尽可能准确的断句 punctuation,但是不是决定性的。& M: g: n! e9 d8 s6 E
其他参数可参考源文件:
! L; S/ t. H- g$ }. o/ Lhttps://github.com/guillaumekln/ ... isper/transcribe.py
0 C& T2 o+ {0 c$ `' D6 O152 def transcribe(6 F1 b! S( Z1 j- {
从源文件你可以看到是支持中文的句号断句的。
) [/ Y/ J& e2 q, B
- s8 u  t9 b7 N3 [6 B! y6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
' f3 E3 u1 Q: Z7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。- s! F1 N6 l) A: Y0 a$ W, I' _# c
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。5 ^- y& e  L- f6 d* }* D8 B
3 @2 W7 t! Z6 F1 t# o& g

( A2 @/ ?6 n5 s! Q( u( s
# w, t* {* L; U8 B% u

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-19 07:53 , Processed in 0.060661 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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