设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
( p  {. m" O9 C0 @4 q9 ]) J, P+ ^
' g' [: C1 m4 ?0 Y* \. h4 \. x借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
7 o, \) J7 [+ \; `; h/ r+ E效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
7 J( N# i' [6 I4 ^# `# q4 E----------------------------------------: v1 r4 a/ k  H# j" G5 _
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。5 L' n  \1 Z5 M" {
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。* v4 r2 f/ T+ o: {
----------------------------------------+ u6 n2 V1 B" `6 m! R6 W" J
https://github.com/guillaumekln/faster-whisper0 O* T2 r3 g2 ]* x( a( N
安装如下:
( J/ _4 r9 n0 k* H# _1, Windows 100 F5 u% y. X9 V5 b3 g
2, Python 3.10.11
2 g* G# ]( [2 D& e. c, D. S( t3, CUDA 12.1
9 f/ e- W  L) [3 X( ^4, 在python 3 中安装
, j! `- \4 M; X( q% x. S5 Upip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
9 j9 |6 j# d% c# o  [$ A: a: T. D; m这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。  g$ O/ o3 k1 H/ j/ L3 r+ {
5,pip install -U openai-whisper) `' j' f; Q5 v! h8 G& k" j
这是向whisper 致敬,可以不装9 z% [3 A" T* n/ T7 w2 M, X3 ^
6,pip install faster-whisper  Q. L# D, a3 o# B' a
----------------------------------------
: s& r1 E3 n* l  Q, N& pwhisper 我用的命令行,faster-whisper 我用的是python。. z; m; q' r5 T# v+ L, `
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
) M2 K. \4 r6 [6 \$ {6 l3 \# Y1 i: e6 H2 Z+ v; Q  B
----------------------------------------  `" _0 K" G1 g$ c) ^8 \/ p

4 W% e$ i1 Y. I1 Q6 gfrom faster_whisper import WhisperModel
1 P! b, d+ _+ I! b4 @
& k, Z' E) }+ l/ X) ~model_size = "small"( w% l$ M: I% @! G# d, W
  _# D/ C  R# r8 U; U+ U
model = WhisperModel(model_size, device="cuda", compute_type="int8")
5 t5 \( d' v9 t
; D6 ?4 u4 t. W# ?+ a' K# psegments, info = model.transcribe(
3 s* I8 k0 r1 H2 P; p    sourceFileName, . |" J; D, k5 Q1 \; G! t6 Y
    beam_size=5, * m$ P& x+ c- O0 V+ \1 b
    language="en",
% q9 h. u2 ?* W. t$ Y  V    task="transcribe",
" W9 Y6 W' b" x% e2 a    word_timestamps=True,
' I, k* U# ]  Y6 g& s1 w# O! R    initial_prompt = "Hello, welcome to my lecture.")7 i: {/ b/ }/ `! L/ c0 \2 I. Q4 P
0 R: z2 u2 b- ]  [% q4 K8 j
for segment in segments:0 d5 [* S$ G4 U
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))( W  ~* I2 ]1 v
/ |4 [; d0 f7 d6 b; C
        for word in segment.words:
& [/ S9 {. `) J) D. q" k: B                % e; [8 O, [! A$ c. a0 ~
----------------------------------------
- P$ G: n2 z' ^0 `! o8 _7 }" q
9 d# _) X0 h/ |, X0 t代码说明:$ G; }4 y: a/ T! q
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
- {; {7 d, V& Z" a; m但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。- Z- J& A2 \& W$ o7 C: k
2,segment 本身是很粗糙的,做字幕勉强能用。
- g# C: Q  E3 q  E4 s4 w' E* J3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。! E- g# }6 N7 h' G
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
+ J. s  y: f  d  C比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。7 n' P2 B/ w7 G6 m) P; a- h
5,model.transcribe 中参数说明:$ O. U5 N$ I  V: D' G" j5 M
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数% M3 s# u& A  E; x0 \+ J
其中
! A! V9 V2 h% z, m* q, e    word_timestamps=True,
4 G8 p" [! H+ v6 A保证了你能拿到 word,否则是拿不到的3 b) k1 E/ C" o# Q# f
    initial_prompt = "Hello, welcome to my lecture.")3 ?& d1 x4 ~; I7 l! }) \+ ?; [. c1 W
保证能尽可能准确的断句 punctuation,但是不是决定性的。
5 V7 R: J7 N0 H; ?/ G6 L其他参数可参考源文件:7 U3 \/ f' C' o2 M
https://github.com/guillaumekln/ ... isper/transcribe.py
/ b4 w4 K5 j5 y5 \( t3 ^152 def transcribe(
# V6 ?% }( @5 ]从源文件你可以看到是支持中文的句号断句的。
2 W$ e) x. a- T$ X* z# t3 {; v- h, X/ t
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
: p% k3 o; o* q. ^6 c7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。% c/ u0 }+ D+ U# B
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。0 t) P7 f8 b& \6 S* p# j! w) `

& X. ^: D- ]7 d) _* G1 I9 u : e) E) \# B, a( a
: z( k+ m$ I) w& e  A+ u% e

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-7-14 02:51 , Processed in 0.036188 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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