设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
! z$ R# c9 {" ?( I: S) c
1 X: B- O4 M9 S借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。4 I: `" s$ D2 N; b6 v$ p
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。( S1 j3 h0 N* v" n; t+ L
----------------------------------------. H" n+ Q- ]- t$ M! W$ I. l+ O) p
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。! D  F- O+ U4 B" T$ h# k. q
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
3 v$ N! M/ d' c; p* O" z----------------------------------------
+ z) r# {0 |& D7 {1 s) Yhttps://github.com/guillaumekln/faster-whisper) K) u5 I, D  V/ y' O
安装如下:
% {  ~7 R1 S( f. S. W1, Windows 10
2 u- K: ^2 q) ], E2, Python 3.10.11( m! b0 G' m! }# K3 h4 p( H
3, CUDA 12.1( J8 m5 X8 f( Q# Y6 n. n4 i
4, 在python 3 中安装
% [8 G) q$ I. U( L2 y% Lpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117; K9 V$ \$ u$ u5 V5 y0 n
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
: J  \3 C7 q- s! d  y5,pip install -U openai-whisper
4 o. w- l' L$ K; p这是向whisper 致敬,可以不装0 v% H8 J! i4 F. O3 g% l5 @5 N% c7 E) H' m
6,pip install faster-whisper
  u% [0 @. e2 B* R----------------------------------------0 ^: f" X5 R3 J. k
whisper 我用的命令行,faster-whisper 我用的是python。3 `+ T' W- U8 k9 I& v- i
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:# f) A" S! D) Z

4 n8 V0 o* }/ P8 d----------------------------------------' V) r+ `. l0 a* N; X. P2 t+ H' [
! l+ Y2 k& P4 Y, O6 X. k* d! u* n
from faster_whisper import WhisperModel4 f  X$ z0 c( x7 m$ p( |7 H3 _

* |: r  Y1 R' `5 umodel_size = "small"1 u0 y. z9 D, d* g- }  S  d) x. \% r

: M. h3 c  I3 K2 ?7 Tmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
' ?' c. @0 n. m- D  n3 L! I: w4 M" K$ V
segments, info = model.transcribe() o. T2 R6 ]) D( g! i% M
    sourceFileName,
8 q" H; n9 B( A. x    beam_size=5,
: H0 a* L% U9 c. {    language="en", " R* _3 L2 @6 x1 N. M! i0 ^
    task="transcribe",   m- L$ n! i3 u8 |
    word_timestamps=True, 3 L: T0 p( F/ Y+ E& Y
    initial_prompt = "Hello, welcome to my lecture.")2 V. s9 P& Z1 N. @2 R. J( _
; J' H" Q, f! j2 `, n: w) [
for segment in segments:
" D. b2 E7 w; K    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))9 D; W3 h$ e4 b! M# E! @

# B' k8 K) i6 O3 T8 n! M        for word in segment.words:
' m/ ?* E9 \& u+ L* E" i! z                6 o/ ?7 G. n4 ?/ I2 c
----------------------------------------
: F" e; a9 H) r. S1 S. j5 q# b* v& t0 H$ ?2 O4 N, r7 v1 t7 j! U2 B
代码说明:' K% k; {" X" [
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。4 j& Z9 ?$ E, a& j2 D' \
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
) W9 ]5 U! h7 |# r0 _' Y$ z2,segment 本身是很粗糙的,做字幕勉强能用。$ H5 I9 V7 A4 U  {8 \8 K. u/ Y
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。& T0 x) |0 [( \* i2 x4 ~
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中0 j7 r/ l8 R0 e2 V& Y$ w* F0 u
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。3 `; d" I- m/ Y9 G7 J& O/ ?
5,model.transcribe 中参数说明:' |2 {& H  T6 g9 g; y% H/ b3 Q
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数! F/ I' D3 s* ]/ V" R
其中
# J1 o' x; X7 w    word_timestamps=True, % |2 k& t! Z$ n  N# D6 k6 r
保证了你能拿到 word,否则是拿不到的( D1 K( f1 z( q8 o" R3 W
    initial_prompt = "Hello, welcome to my lecture.")
9 b" @% s3 b/ l) |3 C8 ~保证能尽可能准确的断句 punctuation,但是不是决定性的。
/ ~" ?+ l$ |2 N& N/ u- M" e其他参数可参考源文件:  k' o* Q4 ]1 C; q
https://github.com/guillaumekln/ ... isper/transcribe.py: {6 M: N: h1 K" k$ u2 M
152 def transcribe(2 E4 a- ?" K% _7 j& [
从源文件你可以看到是支持中文的句号断句的。! x) T8 |0 J( [1 y8 B  p. s2 ^# j
6 ^! o, f  i, N& T9 Z& H6 y; W
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。9 n2 n6 P: ~) j5 K& l% e2 N% }
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
2 e" T8 A7 X0 e% t8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。4 n* g$ Y, L! q) j, ~0 K
6 f5 n- y6 N, X" W

; x/ J  f3 e4 X# M. ]6 n- X5 M: B, Q2 ~4 X6 u$ w

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-24 22:40 , Processed in 0.059347 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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