设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
2 ?) n) C" U+ L6 K) n6 I- p) z9 [# `
7 i* A2 ~$ m. K" X借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。0 U  E# q) r# v
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。- |' ~& B2 \" Z8 m6 S9 `+ y
----------------------------------------2 d! @- c8 D' {2 a- u
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。7 R! Y$ X* x2 H- ~* t
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。' R/ B: B0 E( ?1 r% @/ q! a
----------------------------------------! Z6 D. N; `: o9 n
https://github.com/guillaumekln/faster-whisper
' m* d- n( c; h! {安装如下:8 k- I3 J# O7 r1 d1 @# \
1, Windows 10, u& w* m7 |: O& T2 J/ e; F, S
2, Python 3.10.11
. Y( N: B3 Y4 [) D( I& Y8 M& l3, CUDA 12.1
( D- G: b# L' |* I% w: J( c4, 在python 3 中安装: t5 ]5 ~7 w4 h2 x% n
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
% y3 l/ `7 ]) B. q/ O/ a9 W. P这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
& |' ]) U3 X( f. y5,pip install -U openai-whisper' l& \* ]7 Q: r& e% A- R3 N$ e; F& K
这是向whisper 致敬,可以不装
% X" ?7 Z( ?: h6 ]$ C/ y6,pip install faster-whisper$ U- W0 a& f6 z' h
----------------------------------------
+ s9 s" u, C5 ~: [  nwhisper 我用的命令行,faster-whisper 我用的是python。
# t, B$ P, q# a! J1 A' T* {下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:' `, O) t8 p9 ]: d1 R4 C

9 ]- W, S: t, Q% k& o: k- ?----------------------------------------
; B  ]6 b( b$ G8 V0 I5 R0 M( V; v" H2 u8 y7 @% x1 W
from faster_whisper import WhisperModel  q5 i! D. V% r. P1 N! D8 D  F+ s
( M. D% V- c' x- z7 P/ G: H; L
model_size = "small"
8 g. H, N% R7 }$ I2 r% n6 p' F8 @+ A5 Q& x0 d+ ~6 O% n
model = WhisperModel(model_size, device="cuda", compute_type="int8")
+ I$ D1 T, \- p" a% K  x. ]  }+ A2 g( Z$ H4 q
segments, info = model.transcribe(  v& a+ L& ]) X- i& ~/ P. e1 {
    sourceFileName, 4 O) R% J0 R  L: u
    beam_size=5,
: N7 s! c3 m0 \0 f1 t  k    language="en",
4 u6 v) l$ b, v: i4 _. p    task="transcribe",
. `' f- v, g7 R- D& p: v. R- D    word_timestamps=True, ; H/ v$ O* J% z7 @. `7 Y
    initial_prompt = "Hello, welcome to my lecture.")
/ C. {9 z! `  q2 A- p' y' e  U* a8 X% o( ^
for segment in segments:7 o6 l# F+ S1 p: S3 t( i
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
# t# w" ]3 E. `, ^$ f/ u7 |) @% V  f2 W3 ^* L" `
        for word in segment.words:
- Q/ s: K4 h7 ]1 G/ h8 H& }                4 P9 @. i  l) Z$ ]
----------------------------------------
  Q( r& o7 K( W6 ]# l/ m8 o9 F/ i( T0 D% N1 {6 N0 ^
代码说明:, b. l: z- T  v- c0 @* R; J
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。# d7 G* B; r& l: \& g" ]8 Z
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
1 W, |- L' V1 c$ U# P2,segment 本身是很粗糙的,做字幕勉强能用。8 c7 @2 R' H" M$ `# d2 W: N
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。8 V2 @" ]& U* S$ F" s5 V
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
; F; k+ Q% \7 k( N比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
, d9 s$ ^- B9 q2 p4 v* J0 {5 q+ i5,model.transcribe 中参数说明:
; a- [' X4 {* _- c0 Y1 J- |$ a你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数  q! X! I0 q+ p- U
其中; W# b  H7 R' ^- u3 U  W
    word_timestamps=True, 5 p4 s7 g+ p, b! H) E- E
保证了你能拿到 word,否则是拿不到的
; U# t" ~& ^) X& A- I" `2 N$ p& o    initial_prompt = "Hello, welcome to my lecture.")
) S  d. R' J" L3 A. l保证能尽可能准确的断句 punctuation,但是不是决定性的。
- u% {# X# N8 [" \& w7 L其他参数可参考源文件:
$ d$ A6 R; c; c- C% }https://github.com/guillaumekln/ ... isper/transcribe.py8 u, h8 y$ I; W; `. k4 o% S
152 def transcribe(
. h1 X1 Z: v9 v1 o从源文件你可以看到是支持中文的句号断句的。
4 I7 b3 s6 R3 ]$ ?; I  \8 n( W3 H, K: |( o0 T1 {
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
& t  ]! [; O* N5 Y2 I7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。! B* H( q7 h; s! c& ^2 m; Z
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。* N0 i! t+ Z& ]4 [' m2 {9 z

1 a9 i* k  n, \; Q
8 K$ x6 ^; C! M# Z/ p5 ^, f/ u2 L* F0 D$ x

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-3-22 15:51 , Processed in 0.058163 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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