设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ) H* l) r" @9 U: Y

) R" z; o# [. f借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
% c; \4 L* ^/ I& E; x4 q效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
9 R# O" R' `0 m, D7 Q+ U----------------------------------------% b4 J# T( o+ U# A" l6 O
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。1 r" v; r! g) F4 R! V
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
3 G4 u( {4 C& q( `1 A4 a----------------------------------------
) U% w: ^6 |; _# {* i7 H. R! Xhttps://github.com/guillaumekln/faster-whisper
) D0 l3 r/ l( E! r* `安装如下:$ K6 K0 T! N4 P( L- \: ]
1, Windows 105 i6 I4 V: Y, m) M! t: ]5 d: J- M
2, Python 3.10.11+ B% P7 W3 f0 v4 a' K( R7 }
3, CUDA 12.1+ |. F3 A  E* Y- u+ L+ z3 q
4, 在python 3 中安装& r5 R  y& f; ~5 `& U# U2 X
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
+ x& A7 ~3 [& N0 i  W这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。6 Z; h3 E9 X8 v& e# ^0 N( L
5,pip install -U openai-whisper
4 v+ J* T) Q+ N# a1 X2 j+ l7 L这是向whisper 致敬,可以不装
$ A( ?" Y( R: R; y" f* S& P7 g6,pip install faster-whisper1 T" R& T( H) T" O( n
----------------------------------------
9 Q" f* f# H& E" q1 o; H) [0 lwhisper 我用的命令行,faster-whisper 我用的是python。# j9 w0 A9 C: w3 ?5 s
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
3 S7 \4 c( [( O5 s7 S" l6 S5 S
5 `( \9 Y) b: s----------------------------------------2 c3 H$ G, [9 Y2 {

& ?) L7 i4 D8 p' g3 Z) E& b3 N0 [from faster_whisper import WhisperModel4 B" G; h0 O- z. \

) h: s" G  ~+ u, T# R+ pmodel_size = "small") i4 J  o5 ]2 ]" `1 Q5 `- w

/ E+ O5 P/ t5 [" W6 q# zmodel = WhisperModel(model_size, device="cuda", compute_type="int8")/ n1 ~9 N  P( T  J# v$ m
+ O! M" p. f4 {
segments, info = model.transcribe(8 J, k7 o  {1 J2 V4 q. ?
    sourceFileName,
7 c9 Z# }* C5 }, k8 H# N# L4 Z    beam_size=5, ( I& x7 u" d' R- ]% F: R: i/ E
    language="en", 1 h- X& F. {/ I. [' d# F' s
    task="transcribe", & k  e0 P$ B) @. `/ l; \$ w- \
    word_timestamps=True,
/ H$ C; x* u+ b+ E    initial_prompt = "Hello, welcome to my lecture.")3 W9 ~; R  N' ~8 ~% B$ A

/ t& R9 t5 H! M5 A  @+ {% xfor segment in segments:
  ]  B& e7 F0 o6 Y2 d    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
# ~5 K7 C, k' v6 S3 O$ G; y* o; b+ D7 }" d7 t# {4 t
        for word in segment.words:9 h+ }! d) O" s
                " F( S  C" |, |9 {2 p
----------------------------------------
9 \& V1 m5 E' y$ v" c
; e& \) `3 ]( ?! Y/ i8 \代码说明:" T3 Z5 @- T7 Z0 i4 l
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。9 k- }/ E4 t, l/ U' U
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。4 B- T, t" C$ j
2,segment 本身是很粗糙的,做字幕勉强能用。
1 a+ d% e+ N  k! Y6 h) B3 E3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
( A; ~! d) b1 ~9 n, b8 Z+ [4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
8 y) q! F0 Y# {" [  V比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
' r+ V; g+ G& r7 Z' g5,model.transcribe 中参数说明:: o2 `) T$ V  v; }7 W) o
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
# a1 ^+ q/ u, I/ O! A) A其中
+ n; s& k  u: e7 ~. L% o    word_timestamps=True, : t$ I. ]( I( k2 c) m% m
保证了你能拿到 word,否则是拿不到的
  ?( m7 ?+ m: i* E$ W9 o    initial_prompt = "Hello, welcome to my lecture.")* R# i5 n# o: U# O8 E1 L4 N
保证能尽可能准确的断句 punctuation,但是不是决定性的。4 _* L% |& w# H4 I  q( C
其他参数可参考源文件:
! ~' K9 g; q6 \+ s$ [4 @https://github.com/guillaumekln/ ... isper/transcribe.py: @* X5 u/ i) Y/ T$ z0 f6 _
152 def transcribe(
$ B. q! V; `7 M  v9 F从源文件你可以看到是支持中文的句号断句的。
( |' ]3 l. ~' l7 B6 ?& b' T5 J$ x  T4 [
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
* N! b4 D( v' g0 q  i7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。! ~, c/ c. `2 }
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
' F* A- [, [/ i. O9 c
* w& ]2 f$ G/ R; i8 m/ h- {8 ]
. O6 x1 [4 t& n
' m1 o7 F7 _. c

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-5-18 03:25 , Processed in 0.057004 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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