设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 - }& M/ g! L$ d* H1 W5 C% k: T$ f0 [, G9 t

" c; ]" J0 P  u借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
# ]4 F# {6 W3 @1 p效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
" L1 z: H0 G) s----------------------------------------9 z+ t& [( j/ E, h/ p
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。/ h. T7 d5 f( A
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。7 \& Z* {' \. Z4 B' a9 o# E# L
----------------------------------------( q2 @, N3 p1 K- F; b
https://github.com/guillaumekln/faster-whisper2 U! q! d9 W/ T( I
安装如下:0 g5 S' H, z) ?, D" N( C
1, Windows 10
$ L+ w, Q$ a& M' I+ o2, Python 3.10.11% H7 l- I. z/ K
3, CUDA 12.1
& r2 T+ w. Y1 y2 C1 Y+ m4, 在python 3 中安装
7 t( ?8 Y: C6 k% Npip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117; ^5 q3 g0 s4 T; P  \
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
) z  v+ F, \/ P1 c1 C5 k5,pip install -U openai-whisper
2 h) ^( ?) h! M) V+ @这是向whisper 致敬,可以不装" [1 L. u: b$ M7 W  I# \+ N
6,pip install faster-whisper
4 r$ A/ H( ]- }! A0 U3 n( W----------------------------------------9 S; J( _! s7 m7 y5 I+ A
whisper 我用的命令行,faster-whisper 我用的是python。( E! B* T3 z8 }4 T4 M% ?
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
: D9 O) `0 q' w+ o+ o8 j' d& P7 |4 J: R6 e* R
----------------------------------------
, m! C& G* n5 I, O$ X! b) _8 n. W/ [$ V1 a/ b
from faster_whisper import WhisperModel
3 x5 r. D7 |; L) B! X. Z7 t* e0 Q5 z) G. X
model_size = "small"
  X! ?7 l8 u$ ?( S& t  ]' Y' o3 |/ P2 Q0 o
model = WhisperModel(model_size, device="cuda", compute_type="int8")
2 w1 B5 D) o1 H: q' I; \4 d; r( I; K+ N5 i2 E! M2 R! t' W5 V$ o
segments, info = model.transcribe(
5 x1 |3 h) E7 q7 J    sourceFileName, ) s& W, A. t4 H
    beam_size=5, 7 U( n1 s( B6 B: }  ]
    language="en",
( m! X) N0 ^8 }    task="transcribe",
8 @' e1 M* s; i# f    word_timestamps=True,
* J. C9 f$ v' g* l1 g    initial_prompt = "Hello, welcome to my lecture.")
5 g$ v- ~" `$ @
' ~$ K! z% L* y( mfor segment in segments:3 z2 u5 A5 Z4 Y1 m8 I; \& B) L- F8 d
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
9 B( d( k: l# T; p  s! I/ W2 K7 A, V! A
        for word in segment.words:
) g! E) d  B4 m4 h, i* Q                ' _5 \9 @, m% |% T, Z5 [  N% h* L8 m
----------------------------------------
5 N- p: g0 ?, e% ^
' b+ p. k% g& P代码说明:3 A5 z7 ^5 F6 Y1 `
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
) a+ u. _$ V8 B1 L; b3 v) X但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。5 K: \& N& d' `. [1 o
2,segment 本身是很粗糙的,做字幕勉强能用。
7 m5 q; V/ r' C6 F0 ]+ R3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
% q: _$ m1 x( y/ Q: F8 h% Q9 l4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
5 Y& n2 R9 Z7 L比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。5 p* b8 Z9 v8 l
5,model.transcribe 中参数说明:
  {. N3 R. n0 @1 H你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数1 c, C0 w" x3 O5 `1 C! s% e
其中
; M, y5 w4 {8 C; K    word_timestamps=True, # n& F9 [7 s; m% w
保证了你能拿到 word,否则是拿不到的
* e: m7 c9 Y& S3 L1 k. s    initial_prompt = "Hello, welcome to my lecture.")7 U" p/ h# k. b5 D
保证能尽可能准确的断句 punctuation,但是不是决定性的。" j+ B: V' K, }+ e
其他参数可参考源文件:
# P3 V' S% U: G: U1 D& _( r" Ehttps://github.com/guillaumekln/ ... isper/transcribe.py: b8 Z8 i0 M2 H3 A" o* n* k& x& U
152 def transcribe(
/ b7 A( _% P8 D; w- N$ K从源文件你可以看到是支持中文的句号断句的。! F4 \8 o( W' o+ v9 y' q' S8 d
1 s# a3 P0 f$ p# O9 l: Y# q
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
1 y% h" m1 ?2 g3 |7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
! a- f0 _) h4 G8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。; e( i4 F5 t1 A9 Y2 \; B5 ^- c
/ D" ~2 a* K, c$ ?. ]' o# I

7 s! B7 b% i* }5 t
. n7 J2 x) A; f6 p% E6 d

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-12-30 06:08 , Processed in 0.027887 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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