设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 2 I  t7 R6 H' v* U  c% F
+ G! c- F2 G  W' r/ Q% ]
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。; |. _& Z5 s$ f# A
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
8 y5 |3 [! B- L/ Q. q! @4 \$ R----------------------------------------6 u5 X& g  a- i. E: U7 C
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。- [; C$ f; r# X& F% `
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。; g( _" Y; `/ H( `5 a# V/ |
----------------------------------------2 M2 [" K. {" W0 z3 h% ~9 R
https://github.com/guillaumekln/faster-whisper6 s; P' V4 ~" _
安装如下:
3 T5 U+ V* e; d+ v* x; F" W; X1, Windows 10
. [. }3 G5 L9 H9 d) p- R2, Python 3.10.11
$ A% I! s5 M' |* N1 k3, CUDA 12.1. B" g) G1 L* ~! \. N# ]* Y
4, 在python 3 中安装$ h3 K5 v+ T7 ]. e8 q  d
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
7 s  M. x) V. C# j% z3 \这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。% F4 v! h9 |; V) O
5,pip install -U openai-whisper7 i/ a5 U6 f1 S0 |2 j$ G3 ]/ e
这是向whisper 致敬,可以不装
6 ?, l# C8 D5 a1 w2 U$ u3 a/ Y( T6,pip install faster-whisper+ Z$ k6 o2 d  O4 w" y3 `6 `0 p
----------------------------------------4 k; ?8 S/ I8 N* K
whisper 我用的命令行,faster-whisper 我用的是python。+ ~! U' M  p; ~: `5 B( ^
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:& _2 g; {! @( `. S5 x2 g
# }* ?) r% @! V0 Q" D! \
----------------------------------------
" b3 h) P' G1 @3 e. C% c; D# J1 b+ D
from faster_whisper import WhisperModel) U. R- V/ v1 n( W( Y/ _

; }( o! Y2 r! a6 Wmodel_size = "small"; X( R+ n7 }: G, K4 h3 Z; @- {9 P
( m7 A$ A3 w# x8 q
model = WhisperModel(model_size, device="cuda", compute_type="int8")
1 Q+ \- D1 `0 B$ u: o* ~' Q7 |) }& \6 V
segments, info = model.transcribe(
( ~" w. U% n8 O5 {# j: ~    sourceFileName,
0 d0 [, T4 ~3 Y. }* O9 y    beam_size=5, . F5 q8 I* d0 v
    language="en", , y/ c' H. @/ U" o# P! i
    task="transcribe",
. D' ?4 J( d  u) Q3 X% w) E& j    word_timestamps=True,
" P9 j0 k: y; P' l* `    initial_prompt = "Hello, welcome to my lecture.")
2 M' E/ O' T$ Z1 ]2 i3 v( c$ F6 X5 ^) ?# y9 q
for segment in segments:# Y- v0 i- S4 a' P) h7 I% a
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
% l0 N/ v8 e( v/ u9 k- h6 q: z" k. C* d1 l+ i9 @
        for word in segment.words:3 l/ @1 J7 S9 p2 G
                7 L6 ?) f& d* h. }7 i8 x7 |* X) n) l
----------------------------------------3 ^3 P6 R+ q7 ?! Y) B
/ c2 [" |* k, U2 M* J
代码说明:
, {7 Y. N4 l8 R0 R1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。5 r7 k; S- c7 x. p% h
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。9 h9 f5 j1 i) @6 _& y
2,segment 本身是很粗糙的,做字幕勉强能用。
2 s* D/ a  B& O) Y5 U/ y3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
2 o$ V  {; o6 z" h, W: i4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
7 M0 z" r2 t6 O, j5 }$ j  c2 _: A. M2 ]比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
* O  A7 W- Y% z# o/ O- T: h1 w5,model.transcribe 中参数说明:
/ e( r( h* \$ x+ d0 E你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数1 _( c/ X* w' [7 N  K
其中  @# e$ ^) I7 q5 M$ x
    word_timestamps=True,
  f( N+ c% m+ ]  v5 u保证了你能拿到 word,否则是拿不到的! l8 W* n2 B4 p& F; f$ Y
    initial_prompt = "Hello, welcome to my lecture.")" n" s. c5 f) @" m
保证能尽可能准确的断句 punctuation,但是不是决定性的。: v( f% {- t& P* e, @  f  O
其他参数可参考源文件:; Q' U9 P4 [4 c: q2 V3 T
https://github.com/guillaumekln/ ... isper/transcribe.py1 |5 A+ i  E, G6 e$ {8 c
152 def transcribe(# C" P- v. D; r, A2 z; q/ d& e  [9 q
从源文件你可以看到是支持中文的句号断句的。3 {6 x2 ]$ z2 B
! ?9 z% q5 _2 G& l" q
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
  x& |7 M- l, b6 q* Z- Q7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
" l/ b4 c8 f" W$ k- W) Q$ b5 m8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
' v; N6 n4 Y2 I9 B
0 m# Z3 L. Z" B; S( r# ]* ^* m0 y - ?  V% _% M. f$ C7 H4 U; F  X

$ x  I' o; _8 W2 f/ \" ^

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-5-10 07:05 , Processed in 0.032201 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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