设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
4 [3 N! d+ w  Y2 |- ?0 C7 A. r5 \9 V- y& n. i
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
+ x  p, U) E3 ?效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
9 _; O" ?4 K+ Q: b6 k----------------------------------------
; X4 P# a/ L' a& x  g7 M8 ~显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
% X9 e! n) _7 S" j# @( j在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
$ W/ O; M& J) c" Z----------------------------------------+ R( i# r' O6 |4 g! i7 v) Z
https://github.com/guillaumekln/faster-whisper
& w" Z& F" O6 b( V( p安装如下:( J. Y9 X6 J, R
1, Windows 10% S. s0 E2 _7 ?
2, Python 3.10.11
, S5 @; O: }5 j4 F7 u" k3, CUDA 12.1  I' o+ L, j# j4 M
4, 在python 3 中安装
/ `, V4 v" T$ I  q% i( ]pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
- `1 i9 |7 J/ [这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
& H, i! P$ z/ g( r1 O8 r5,pip install -U openai-whisper( [; ]  D5 K! H, Q9 b  `4 I2 m
这是向whisper 致敬,可以不装+ a0 V: a$ ]0 |+ I; j
6,pip install faster-whisper
+ e2 v+ R% m. {9 e. r----------------------------------------
# J2 M- W( u! wwhisper 我用的命令行,faster-whisper 我用的是python。
6 O2 E1 b! \8 \$ y下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:; r( l. r% S& ?. J+ u/ v% @
* o: y- J; K2 }" F; m; g8 p) f
----------------------------------------
: `* D6 A6 ?7 @- E6 _" a2 G/ _/ \3 z: |7 B. [7 F: H# i
from faster_whisper import WhisperModel
' q) J* C' F2 v0 H2 c* s0 q$ N5 g8 V: [6 F8 v
model_size = "small"
' b5 j( l( v: u8 Z
2 s9 q, @5 P4 |! xmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
, T2 M. ^; V' u. K+ G3 u
0 o9 E# m# u9 z, o( R& l! j: zsegments, info = model.transcribe(! s1 O) u, }- B1 F' u
    sourceFileName,
0 }# _9 \6 z9 }; P3 j' I    beam_size=5,
( S, @9 {3 V- ?" }* A    language="en",
4 r& z, ]6 B2 O    task="transcribe", ! S) g- i/ E! o* a7 m: d- v
    word_timestamps=True,
) p0 C  ]2 m7 P( L    initial_prompt = "Hello, welcome to my lecture.")
3 `* S) {' r0 C1 e! j0 ]* _, g: K+ E9 w7 }, u# W# _: a4 Z; [8 r
for segment in segments:
2 f" H5 k( _( q. V    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
! y$ b1 o5 a2 o; S7 A  C' ?$ L8 q5 \
        for word in segment.words:
+ a" j$ `& \  P/ n! W                6 N* z* y% e7 c2 H! D7 T
----------------------------------------
; T1 f, e5 D& w+ `- ?, ^
( b5 l/ p7 Z' y9 Q代码说明:3 }% v$ I2 g6 k' c% l" E
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。) `9 B7 A6 g3 F0 @
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
7 Z) o% _% b0 a$ @( s& L2,segment 本身是很粗糙的,做字幕勉强能用。  o+ G  |3 a& P: u" [7 |
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。6 O6 g0 h. w6 i# e7 I1 Z+ K9 B
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中) K3 U5 f5 _+ z0 `, {
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。' h1 U" U' H4 q, A. W/ i
5,model.transcribe 中参数说明:
0 d8 x# _! m% z' l5 g你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
* G1 y/ B3 V2 \3 N/ w: K& o其中" a* t( v2 i# ]. p7 l( |
    word_timestamps=True, ) o5 ^3 R) y& r# O
保证了你能拿到 word,否则是拿不到的. D. |/ g3 m9 A% s, ~& f
    initial_prompt = "Hello, welcome to my lecture.")
' U4 L% f# t4 d. f$ X  f6 t. g+ b保证能尽可能准确的断句 punctuation,但是不是决定性的。0 K& w7 Q# }  s% x
其他参数可参考源文件:
8 P) |$ {' O& |& e6 Y5 \https://github.com/guillaumekln/ ... isper/transcribe.py
0 S6 W6 U. L& m1 {- U; v! P2 \3 O5 y152 def transcribe(% M7 `- r) i! j3 R" T
从源文件你可以看到是支持中文的句号断句的。
# ~% z) P/ ]3 c( Z+ l
  k( c' g% z/ Y; D  ]4 s/ O# C0 C6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
! n8 d: Y+ Y; j7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。' Z  k' P$ N" x, _
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。4 W( K& r/ M) \$ q
4 S! S, ~+ O& w

" M- y8 B# E+ T; Z9 |
' p6 t) `* d! r  t' k0 ~9 X' D

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-9-16 08:00 , Processed in 0.056627 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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