设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 2 j& y+ x) h9 v

% \) C  z2 b/ D# ?借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。7 D* [' g' e( K5 S
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
) G4 J, Y! |; _! @----------------------------------------9 N" t' Q. o. f( _
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
1 Y5 s0 S! h  w1 d& j6 G在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
# L% r5 @3 J& w* S4 e/ a4 G/ s  Y----------------------------------------6 v. J7 T. r8 ?& g4 z
https://github.com/guillaumekln/faster-whisper# A$ K2 @, X/ I, D/ W5 X
安装如下:
" |' |  z$ p) M1, Windows 10
- J# b" X: J( Y+ w# M2, Python 3.10.11
- g. c1 o( X0 [& _; T/ X3 h3, CUDA 12.11 P' r; [9 y* f  g
4, 在python 3 中安装
. m$ C' q' p% v% \) Y# dpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
- r  I" u( q3 W$ W& G这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
# l+ F5 A# \, V% Q* `5,pip install -U openai-whisper. \. J- x  M2 V) T
这是向whisper 致敬,可以不装
$ n" K# |* w( m5 T- [  w0 ~/ d6,pip install faster-whisper
( o; j. N& w1 o' D, o----------------------------------------
9 d: s8 L8 r, l( [whisper 我用的命令行,faster-whisper 我用的是python。
$ z$ H8 Q  K7 u4 [' \; m下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
% {1 m' k- [- X& @: }% e, v8 F( g; y0 x
----------------------------------------0 W! e1 e3 W, {% h) g0 n& ]
* _9 _" l' ], _, u" U- Z; i; R
from faster_whisper import WhisperModel
  \0 `; t9 B" P9 ^7 U; t- H; b
model_size = "small"8 N4 a) P' D4 j- |# a8 c0 l" N
* a6 x% {# K3 p# L7 [
model = WhisperModel(model_size, device="cuda", compute_type="int8")
& V9 p: T5 j3 M0 i( x6 q0 A, @
' ~. D9 ?, O4 y) Vsegments, info = model.transcribe(
  k. F) r( a+ B* {* k$ M: ^" S    sourceFileName,
6 q0 Q6 l5 y' b# A% V* `    beam_size=5,
9 u+ F1 t9 x* o8 n. Y2 l3 y. V    language="en", # ~2 Q0 o- N# g
    task="transcribe",
; j) H6 j$ h: z1 W. k3 y    word_timestamps=True, 0 w6 h: I% ~% B, \8 v
    initial_prompt = "Hello, welcome to my lecture.")- @* N8 o8 m' A' G
7 Z! B% e3 K! `5 w- P
for segment in segments:4 b1 c) t8 \; T4 S- K0 G7 P
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
0 M1 ]. T8 T% s- A+ ]0 o- _
8 H; }; @4 y9 k0 k7 s        for word in segment.words:' Y5 @) V# C  v: x7 K' Q
               
# ?5 r: ^; U& L2 Z, @! q----------------------------------------: T( R- v! |" G' O! b( E

# x" u  s8 c2 a8 f6 K$ V3 R  Q* ]8 H代码说明:: N' ~2 {0 c3 B, u" U
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
- Z7 m2 F9 N" y$ ~0 F1 K但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。8 ~) U, s6 g/ C8 W$ _2 o
2,segment 本身是很粗糙的,做字幕勉强能用。4 y( L  t+ A' I) d3 G1 X1 r
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
3 K) |3 [+ \. A8 Z' }4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
6 h: b/ e& H5 g& m& n比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
! K7 R2 c! y  \. a4 k" ^5,model.transcribe 中参数说明:! ?' {: j' m2 C! w3 E: j
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
: k, T, t8 |) ]1 B+ R/ @. _/ H2 n其中' K3 J+ `5 z9 e
    word_timestamps=True,
* C" Z" \! D* u& c% k0 y9 }保证了你能拿到 word,否则是拿不到的% v" A& `; W1 P+ S
    initial_prompt = "Hello, welcome to my lecture.")
) K7 e# U: u9 y! A2 I保证能尽可能准确的断句 punctuation,但是不是决定性的。$ M, e8 [" M# [! E& ?
其他参数可参考源文件:( A9 _2 _! l+ u5 e2 o2 V
https://github.com/guillaumekln/ ... isper/transcribe.py2 k8 A  ]9 Y4 d! l6 e
152 def transcribe(
# j% I) R( o2 V9 O- u7 I$ Z' n) i从源文件你可以看到是支持中文的句号断句的。
! i/ h2 P* H; e6 ~' V0 o9 r
7 B4 J, F* G. r( x4 U3 [  Z2 P6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。8 s: J% G* A9 w% g7 Z6 F2 d
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。: R! ?' `7 f5 @. A3 F% m; t
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
$ H9 r% ]4 O! p( @/ f+ c' D
; i7 Q8 E$ _, g ( \& S- y" u4 D$ B7 L7 f* p
0 q% o' x: ]' u; V. ^) H

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-7-7 07:18 , Processed in 0.056348 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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