设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
; n$ e1 y! \  @1 E" r* @2 h. ?1 u
  Z8 |+ d" ]* @) t借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
7 H+ W) y7 ]0 P2 e" j' [9 Z: j效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。8 {* x; u6 T' y; G, O
----------------------------------------5 k7 p' z# ~/ @
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
! B0 y5 r% g  X4 _& Y% |$ C在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。! Z3 u9 G1 m1 V/ l" _6 w
----------------------------------------, ?6 h8 q* Q  P% O0 B6 Q2 e/ ^
https://github.com/guillaumekln/faster-whisper' y+ M6 l3 A2 I2 A' r6 _
安装如下:; P/ N8 B. A) D3 v
1, Windows 10
/ m1 w6 y! W) q8 p, m, v+ [6 _: o! }2, Python 3.10.118 W  B7 }1 m0 O+ g2 t* ]
3, CUDA 12.1
* S0 W5 m( G& t; j: j4, 在python 3 中安装
3 h( w# p. q6 u# S9 Jpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
6 h/ V9 ^) a1 M5 W- u! x% @这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
. b" K; ?/ R7 o1 @; Y5,pip install -U openai-whisper
7 f1 d) f$ H0 b& v- @这是向whisper 致敬,可以不装2 ]% A  }; T% ^/ c! C/ Q. J
6,pip install faster-whisper
4 Y. P9 I! c8 ~/ j8 E" m% ^----------------------------------------* z3 P% c7 U( v
whisper 我用的命令行,faster-whisper 我用的是python。
4 f8 [! d. E/ Y1 Z5 Z6 ], U下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:( \9 l6 K/ W1 i2 L
  v" G1 j# Y0 S0 a! [
----------------------------------------
. ~. N4 E. v6 g0 ^
* M) t$ N2 D6 o9 l" V# Tfrom faster_whisper import WhisperModel
8 x+ i. y8 b; G, L* k/ b: x* O/ [* R9 S
model_size = "small"
5 A3 {. a% H( V$ W: V
: H% W7 q8 G$ M: Q' Omodel = WhisperModel(model_size, device="cuda", compute_type="int8")+ k1 V* k# u" W( C; E0 O

' ?  I+ V0 m4 r' vsegments, info = model.transcribe(
' k% m7 Q7 z+ N+ S, I    sourceFileName,
4 C* `% P0 f0 ~3 i8 ^0 b$ V    beam_size=5, * N7 N$ c! \2 m) v5 b1 L. F( }2 w
    language="en", 6 n8 }/ t6 H# F6 ^8 O" e
    task="transcribe", 3 G  m+ p1 i" n
    word_timestamps=True, 9 v$ o) e/ J1 o2 N% L7 J9 Z
    initial_prompt = "Hello, welcome to my lecture.")2 d" E3 p& C: }- J; E. y
3 D& c, j4 v, {
for segment in segments:3 n1 g- z! Z& |$ K
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))9 }- H# }- |& |1 T& C2 m

1 R% y5 k3 ?9 u4 B+ P' {9 ]; V        for word in segment.words:" S, a1 O+ B. `% G6 Y& D: v/ t8 e
                : m7 f; N& _- {. V/ j% a
----------------------------------------
" L3 B7 t& |7 J% J" t$ n+ k  Z: \+ V
代码说明:
5 Q! [5 v0 b3 x6 c! g' l1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。, g, v, u( U- A+ L# P  L* x8 x
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。, V3 Z& V* b5 x% z6 }& J
2,segment 本身是很粗糙的,做字幕勉强能用。  |: T) r, E% B* f1 P& S1 b8 K
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
: [& ?  }4 _2 v% [! k4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
: E( I& u, I/ q: L# [% r4 J; |* ?比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。" u, C: W: X4 b* L* k  v
5,model.transcribe 中参数说明:0 h. c2 R6 O( K0 L" I
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数' W( ?6 O3 s/ a! |4 ~
其中
) h7 j# o7 M* }+ F+ s/ L6 g    word_timestamps=True, ! m5 O2 z/ z1 {/ W4 _  {5 H; j
保证了你能拿到 word,否则是拿不到的7 U4 H4 o" I! f; `7 w: h/ B
    initial_prompt = "Hello, welcome to my lecture.")& W1 H( i# P# [& p0 W1 Y
保证能尽可能准确的断句 punctuation,但是不是决定性的。
' k4 C" r6 s" O0 y( W$ e( e, R其他参数可参考源文件:
0 ?" c! |7 ^- _. l3 vhttps://github.com/guillaumekln/ ... isper/transcribe.py
* u8 W5 u, u" Q; }152 def transcribe(* H' R: J, D- ^% |$ M
从源文件你可以看到是支持中文的句号断句的。1 p2 x; a7 D: f3 X
) J" x" Z' d. e" ]
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。3 v2 Z5 F; q5 y+ W& K) [
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。1 G$ \* [" h6 |1 G
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。8 s( X0 u5 ?5 ~& K/ `) c* C4 [) g
# u0 y6 X8 x. m
  j( _8 ]; ?; w2 S) B

9 ^! S4 Y# I  _8 Y

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-11-13 07:49 , Processed in 0.041360 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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