设为首页收藏本站

爱吱声

 找回密码
 注册
搜索
查看: 2326|回复: 1

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

[复制链接]

该用户从未签到

 楼主| 发表于 2023-6-4 02:10:18 | 显示全部楼层 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
/ M: [/ [% {; P9 J6 S5 }' o# v7 ]5 _7 b& @6 D
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
8 m& v6 P* J9 g* S0 S效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。( g' i( J/ h) h
----------------------------------------3 _/ y- q5 _" b# e% r, H
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。/ S0 c2 r7 o, p/ B, ]! k# U
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。7 Z# ^1 A  g" F7 z& W$ D
----------------------------------------2 i* [' u2 g5 o
https://github.com/guillaumekln/faster-whisper
1 J& c. G7 o$ z# u* J; {安装如下:  \) c% ^7 T! I
1, Windows 107 Q& w5 M* ?+ j2 A
2, Python 3.10.11" L, z9 D+ l1 V: f& O
3, CUDA 12.1- _0 R2 Y8 Y5 s, Q0 T
4, 在python 3 中安装
5 B  Q6 n3 k; j* C# I( v6 Ipip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117( s( m! W& G1 M! w1 i9 T
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
4 P2 D; v" g: P9 m! _# {" j5,pip install -U openai-whisper0 Z! }" G; H! F1 ?
这是向whisper 致敬,可以不装/ h/ \6 o$ P0 Z7 m& I" U/ s
6,pip install faster-whisper. D$ y5 r, d% @/ k0 ]3 U1 u6 |% c* T- A
----------------------------------------1 _6 ~* Q" d( Y7 v
whisper 我用的命令行,faster-whisper 我用的是python。$ q. o% y& Q  h  U/ m* o
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
7 T$ M/ K' I" W
' G. H$ n$ s! z9 a# m----------------------------------------
# F3 y2 {0 M/ x/ s) B$ D- E% M: c' D/ A5 {! W5 R+ r( B" a
from faster_whisper import WhisperModel2 e' K  c+ p* p" `. l/ D, j
+ E! c  s7 L9 R4 Z
model_size = "small"
; j  V# h' e* c) Q+ |
: D3 C& ?: O* y! `* J6 Fmodel = WhisperModel(model_size, device="cuda", compute_type="int8")+ Z/ Y6 V5 p1 }- [

' s$ u6 C+ B& B' L! B5 N, Rsegments, info = model.transcribe(
0 \4 O: z% q8 L9 f. x( h" f3 Q" K5 l    sourceFileName,
+ K. X$ k" o6 v0 B0 e0 [    beam_size=5, % M5 z1 }7 n1 Z& D
    language="en",
. z, ?* }$ v' z' t) w    task="transcribe",
$ o* l/ W. E! G% [  V: n    word_timestamps=True, 8 Y: e/ p' [% d; G$ ?
    initial_prompt = "Hello, welcome to my lecture.")
( C) b' w0 D, v8 B) H9 y1 J  ~0 w+ [/ I' [, n5 |
for segment in segments:  H6 I" D, ^& s) Q3 w! w
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
- {$ T0 X  ~  M2 C6 D. A' y
1 l1 z: l5 v( [! X- K        for word in segment.words:
0 a% ?2 U5 T- B- `& c                + R+ J+ Q- r, `; ]
----------------------------------------
5 W8 H$ K# S! ]
; `; M7 B. v1 E# d0 {) J代码说明:) B3 j+ h$ @5 X  F2 y& j5 S3 m1 q
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
+ @) P7 Q2 N& C' B) k' j& ?但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
' y$ Q3 k- F8 q& G& ^2,segment 本身是很粗糙的,做字幕勉强能用。1 z# ?  B0 ~1 z6 C
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
- G/ I& D( ?* ?8 m# R' y4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中; B1 h4 H9 k! s/ s+ _9 H/ b
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。$ L" z2 ~' G0 k2 Q- ~7 J# \% C0 a
5,model.transcribe 中参数说明:
  W4 b1 K" |+ x' O4 w0 I$ G你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数4 l6 {- K0 E; r: Z) J" s
其中
/ b6 O& q, K8 u4 R2 U2 W% J! {! A    word_timestamps=True, - I7 d. w: w+ g& C! Q- l
保证了你能拿到 word,否则是拿不到的
( s8 R" I' M' @+ @  C& g% `# p% X& l    initial_prompt = "Hello, welcome to my lecture.")
& r+ g/ J! y. a0 @- B0 S% E/ X保证能尽可能准确的断句 punctuation,但是不是决定性的。% L$ s. E4 G$ V0 ~7 J2 W/ B
其他参数可参考源文件:
& X0 X/ G# x0 @8 ?+ k$ nhttps://github.com/guillaumekln/ ... isper/transcribe.py. u3 z2 f* Y  O6 i4 b: d+ U6 H
152 def transcribe(
1 P/ Q6 B% I; c4 V7 J从源文件你可以看到是支持中文的句号断句的。
7 z1 M' r3 j3 A- l5 ]3 Y# g' d1 g& e8 u# n7 j$ N+ W& [
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
8 R! q2 [3 k+ I: K: E7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。( ?; @# `" n  Q- y3 Z! L
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
/ c, x% l! o2 v3 h% \: ^( [7 J* w2 R' ~4 c/ U  d- ^
3 x& \% l5 u. L1 N1 D

5 z" t. ^0 K. m& [$ z

评分

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

查看全部评分

该用户从未签到

 楼主| 发表于 2023-6-4 11:53:23 | 显示全部楼层
多谢各位榜爷打赏。
回复 支持 反对

使用道具 举报

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

GMT+8, 2024-3-29 16:57 , Processed in 0.046105 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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