设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 6 @3 j% t" |# _! B8 F1 f
0 d6 s) Q' E  L& ]+ B7 E
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
' s- _9 ?0 T/ [+ Z效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
% q! [9 C0 P8 ^8 u& M$ s- J- S& ?----------------------------------------0 M; Q! j) K) |3 W; `1 X; c
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
) O$ }4 W& a* d2 {: T  a2 ^0 b在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。, n$ R8 Q. F: R5 c7 P
----------------------------------------
2 C6 O. ^+ A8 `' l5 lhttps://github.com/guillaumekln/faster-whisper
) R3 x3 D, ]6 s- R( F& O) P2 h安装如下:
. N- }3 b. B! S2 d1 C5 Q6 J1, Windows 10- Y: q0 n# U+ v1 S* d9 `
2, Python 3.10.11, {! v& T2 |+ P0 r2 D  E
3, CUDA 12.1: p! J' G( m& j% I1 M' ?
4, 在python 3 中安装
  ~5 t9 `9 H0 T7 D) ^$ lpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1170 Z8 [, \  Z9 U: Q$ n' O8 s+ p
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。% ~4 J* z" s$ h. W% k
5,pip install -U openai-whisper
5 b0 c6 e5 O8 G4 E4 c4 G+ |5 Q& F这是向whisper 致敬,可以不装
  j" P$ z* d2 [2 O3 a+ A- I7 Z2 Q6,pip install faster-whisper. a+ f+ z( x4 f8 a
----------------------------------------
) ]' B  o. `' m' |$ l: |+ m  O0 Kwhisper 我用的命令行,faster-whisper 我用的是python。8 f6 o7 j+ ~4 n
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
: U) H( d$ n3 ~9 }6 C* T& k% t9 P' }+ |2 Z7 z
----------------------------------------
; R$ h% k4 w! c4 u- q: L/ X- ?. O$ D% t" }
from faster_whisper import WhisperModel2 l, L9 W' r0 _* h
  H3 U7 J: ~8 g! v4 x2 N+ d
model_size = "small"$ B2 }3 T4 z5 L* D- J& I- e" D

0 S8 M/ t6 [( o  C; s, mmodel = WhisperModel(model_size, device="cuda", compute_type="int8")( _. N8 B7 B3 K! T+ f+ W8 \

) \- t* g* D& d1 ]segments, info = model.transcribe(/ y  w6 w6 S) |& S
    sourceFileName, % M* }" h% |! o* k! C1 S
    beam_size=5,
" X3 P* l: h7 \; p, ?- V    language="en", ( r( W0 N% M1 d" W
    task="transcribe",
( t8 ?1 N0 ^; R4 i    word_timestamps=True,
" _& r1 L) j' l7 f+ s. U    initial_prompt = "Hello, welcome to my lecture.")7 L1 n/ _. [/ V1 M( h* I
! _/ ^) [, Q7 L! p
for segment in segments:/ J- w; j0 P0 Q0 E/ o% a
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))9 N$ r, ?* @$ Y( w# o

& d  V& a. o) e        for word in segment.words:& Y+ ?5 I/ s* s; G% Q7 {8 h
                ) M# e! A8 N, m) v2 C. G
----------------------------------------; i. l, a+ y7 J- D3 Z
: c$ L: w% M5 o3 D7 Z8 t
代码说明:
1 A- J' {+ H& H, B1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
' ~3 ?$ U: v& u但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。/ m7 m( f4 S/ A0 P# @/ f. r
2,segment 本身是很粗糙的,做字幕勉强能用。' d/ J, m; ^: d. M
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。0 x4 y6 p. H; F8 X1 \
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
7 @) Y7 I& R6 s比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
- T3 L5 _6 j1 q5,model.transcribe 中参数说明:
, A8 l! E- N+ w6 @$ Q$ K你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数1 H  Q; M. S% M5 C9 E
其中3 _  z0 \+ P0 {# g$ \
    word_timestamps=True, # o# Z3 }! p$ P3 q& K" s1 b4 l
保证了你能拿到 word,否则是拿不到的! S! o4 H4 p4 a4 S" W8 v
    initial_prompt = "Hello, welcome to my lecture.")
5 S7 z  V& o6 B4 l- c5 Y保证能尽可能准确的断句 punctuation,但是不是决定性的。% W; E8 R3 Z+ h, u$ s
其他参数可参考源文件:
. A8 M5 K7 r. C. z9 a/ W- Bhttps://github.com/guillaumekln/ ... isper/transcribe.py
# X# i: }" W4 X' q( `  X' C4 b3 M) @! M152 def transcribe(
9 w6 l, p+ C0 Y从源文件你可以看到是支持中文的句号断句的。8 p' U  p: N- l* M- t

8 Q. W& m* R0 _$ y( X6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
( s& E7 B+ M+ F) \; h7 P7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。. C, j5 x0 Q/ x9 l3 x2 ~
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。# y9 m; U' y; g# G. C
* B, |4 z( l7 e
1 o8 n  j& i/ v$ e+ ]: F

+ s4 K: C" |0 |" M4 V2 j' G4 i$ F

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-8-22 15:10 , Processed in 0.057810 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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