设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 1 g/ R, w  s0 M5 y! O- W

4 w7 T) M8 Q9 ^' U; R' C  X8 n. h借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
  _2 y) ~. C. L. Q% H, Q- @# b. E效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
: A. d% x8 N: \----------------------------------------
( R1 [/ A: `3 }, r显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
9 g+ r% z9 }+ b& j% }! u在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。4 [5 h, L( D& w* ]  I4 d
----------------------------------------6 x3 W3 R; Z- E" r  Q4 r; _
https://github.com/guillaumekln/faster-whisper
& X8 M% e6 q# }$ L9 ~+ ?3 ~安装如下:
- u+ U5 P) k& M1 p4 n' [1, Windows 10# @( x  e9 }; ]
2, Python 3.10.11
3 x+ n8 ]  w$ W) k+ P' q) {+ Y3, CUDA 12.1" a- X; ~# U' d' @0 X7 y6 b) L
4, 在python 3 中安装7 X0 f7 R8 f* @( C# E) P" O3 P
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117" w' m% J* [. b$ X' K% T
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
  X5 J% I. [% {# p5,pip install -U openai-whisper
6 q5 K, t. K) c' }这是向whisper 致敬,可以不装/ p4 c5 Z, f. d6 o' b% w
6,pip install faster-whisper
, I; y" t/ F. Y5 t* o----------------------------------------
) e* C0 {* Z1 X6 ]- ^6 jwhisper 我用的命令行,faster-whisper 我用的是python。
% n! S8 E: x1 {. Z: `下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:! w6 F1 \3 p* V, j  h: l& g; J& _
+ G9 q3 ~  Z$ G0 V
----------------------------------------: j* n2 ~6 c9 [
. I+ t, c: M* d
from faster_whisper import WhisperModel9 l6 N  u& O1 |- N
/ |$ L1 l5 D! v* r% K
model_size = "small", t' p( h  }. Y
3 i: R$ n9 K5 a
model = WhisperModel(model_size, device="cuda", compute_type="int8")
" C  f+ h% }) u6 Y. |5 q- B
% S$ W1 q4 `0 H- Q: n0 Gsegments, info = model.transcribe(% D6 {  D& n3 d7 P$ `3 Z0 _
    sourceFileName, + R7 w& v5 n8 Z$ z- q9 l
    beam_size=5,
* H$ {- `# A. ?+ j/ K    language="en", $ i* H, L- J! j; U, f3 ?
    task="transcribe", " K# l$ s6 L7 n* x5 o
    word_timestamps=True,   o4 A- U* U. A1 [6 m
    initial_prompt = "Hello, welcome to my lecture.")
! l' q" p* \* o2 u- Y9 M& H, n+ y0 A7 i" k$ ?
for segment in segments:
9 ?4 Y( E. ^* g& ?5 p% Y+ @    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
9 ~# f3 A. W3 _+ J' W0 R: p4 ~; Z8 A- g3 \/ {" Y
        for word in segment.words:' ?3 c) w8 S" X3 E0 C+ e
                2 r! d+ B; z% I
----------------------------------------
# f$ Q$ p- e, u- S' y2 ^$ m& f9 M
. t7 C8 w' L$ p" c" x6 k代码说明:
  X2 f. x; j8 N) k7 Y$ D1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。+ M# p# q( Q' n" h5 s7 z/ e7 T8 |" E
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
# |% M( |- ]0 G" P2,segment 本身是很粗糙的,做字幕勉强能用。; P- C: [$ }5 I2 g
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
  ]1 i% H1 I. h$ `  N, G; G  V# N4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
. G3 J5 {2 P+ b4 n" n比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。$ Q& F; ]! @  V/ [
5,model.transcribe 中参数说明:. B$ r2 _2 N# D0 Y" r. f$ h' t" ]
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数  l: H6 A* g9 j4 Q3 f. ^' U6 O7 i
其中
+ y$ L  k. S/ V: p& g% U    word_timestamps=True, : k- a6 G. @4 m5 ]$ I: X
保证了你能拿到 word,否则是拿不到的
, g$ L( e9 K" f3 ^! e2 o    initial_prompt = "Hello, welcome to my lecture.")
; I9 }* f2 y+ {4 H  ~+ s0 ^. K保证能尽可能准确的断句 punctuation,但是不是决定性的。; z. d) x4 X  f# z; R, U+ \
其他参数可参考源文件:
( I# s3 G/ n) R* _" ^% N/ O  a' ahttps://github.com/guillaumekln/ ... isper/transcribe.py
" a1 U1 ^5 F3 t  _" |* m152 def transcribe(- G9 r3 C2 B9 q7 C5 C
从源文件你可以看到是支持中文的句号断句的。
' B! L; \/ Z7 P' _# b  Z
2 C& {9 y/ b9 h* B0 X) s& s6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。9 D  r5 S* q" M) k% F+ h
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
/ k( n& n1 U5 z7 E3 P2 ?8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。; d/ W) d$ O0 s1 N6 ?1 P
. i6 T9 s' U& e, R$ W
2 w- ^0 b: c3 I3 I! @9 \
% k9 v, v3 `8 t6 j

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-12-17 06:54 , Processed in 0.028138 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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