设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
, w6 r, E+ d/ s, F
! l$ m9 ]/ s% u: a6 `借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
& D6 }" Q/ {0 h. J4 E' M* \+ T: T4 a4 a效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。6 \2 m2 v& _3 Q- t$ k
----------------------------------------9 ^1 N; X+ u% o  B. B
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。4 k7 r' p) h8 H3 s
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
$ m* s3 X  H: U: }----------------------------------------
! |4 P  e  Z- `  {: U- p9 X# Whttps://github.com/guillaumekln/faster-whisper0 v+ J3 u9 i$ G0 f
安装如下:( C/ `3 U" \$ n7 V8 B, x$ U
1, Windows 101 O, p+ Y' t4 Z+ G9 H6 H
2, Python 3.10.11
  r- b0 U# u8 `" v9 V& k8 a3, CUDA 12.1
  d+ \0 |5 u. P. ^1 B! T! M4, 在python 3 中安装
  _6 F! l" J; p! D& V$ f" mpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
) o* m" {! g7 J0 b/ x: V这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。7 O2 n! I) M' k# |
5,pip install -U openai-whisper$ a) V5 J# A" h5 B9 ^( o" j
这是向whisper 致敬,可以不装$ {8 B* N* H! _% G7 E9 g
6,pip install faster-whisper
" g. A7 h- h4 I. O( r----------------------------------------6 q0 _2 m  K3 R  a7 A4 e
whisper 我用的命令行,faster-whisper 我用的是python。
/ o+ p, f- e( x6 \下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
( N$ k3 v! o- g  E: {* C- r& }4 ?* `6 i  S$ o& {+ g
----------------------------------------+ I/ Q9 J; Z# H) ?% c
+ v8 Y* ^" |/ g5 l7 P# y
from faster_whisper import WhisperModel, g$ j  z# K1 p
7 t6 T% Q* ^- D' d$ ?9 C: D
model_size = "small"
0 i1 [3 G8 k- i; Q* `% h: b, d8 p
; e1 m* X  y) f% u) ~( xmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
+ ~# J* ^7 Q9 \5 l( f* R6 i4 |
6 ^, F$ E" t' T, o0 B/ j4 isegments, info = model.transcribe(
; K# W. @' n& J' p2 h4 E" o. M    sourceFileName, , \5 ~! r( X: h. z4 X! w: g3 K
    beam_size=5,
0 ]+ k# m: F  V' z5 H+ ^; C    language="en",
! d! ], u- R0 Z6 U    task="transcribe", & `. P- n% [2 x* E
    word_timestamps=True,
) ~1 q! x: H8 p- S' r$ N    initial_prompt = "Hello, welcome to my lecture.")
4 A% X( b9 p; N' X2 Y
3 l, V3 V% @+ g& @1 y+ g* J  Q( I, Xfor segment in segments:
/ w' I3 ]1 F7 |, a! }; q4 \( B( i    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))/ B& O6 e) _& c7 D( Q

& ?) Z) j3 l1 C9 n; ]3 r9 b7 H        for word in segment.words:8 s# A3 u) I0 M3 Y4 O3 d8 |
               
8 H+ D5 i8 v8 p; b# K$ \$ |+ s----------------------------------------4 X( O, ^1 U, i( U
! f& I# W+ S5 X: E. w7 T
代码说明:
- w; M/ ?" \$ d1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
& C. G1 N) r& Q但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。! B2 E/ |- x+ {1 B9 {8 R7 q. [
2,segment 本身是很粗糙的,做字幕勉强能用。
% Z1 M' Z! c3 p" X! y+ U2 a1 L3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。3 }2 W& G" Z9 n0 {5 u* X" F6 |
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中1 q6 W$ r, i* u0 }; ]! l* R
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
6 w2 g( i0 Q5 D% b, t7 e# Z5,model.transcribe 中参数说明:6 s, w9 W! P: p
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数$ f& s$ q6 Y4 C) C' L
其中. G3 j; Z' Z/ v. O- G' v% R3 |7 S
    word_timestamps=True,
- r  V0 I( E+ M. l2 Y& X3 }( ^保证了你能拿到 word,否则是拿不到的, M* B8 ?. `3 K2 g
    initial_prompt = "Hello, welcome to my lecture.")
2 T$ ?. F6 @0 a0 F保证能尽可能准确的断句 punctuation,但是不是决定性的。
1 v/ R/ e& R8 \% W9 I/ b其他参数可参考源文件:
5 i: W  B9 q  h4 U5 n; z  ohttps://github.com/guillaumekln/ ... isper/transcribe.py2 B- x4 _5 P; |
152 def transcribe(, I: @; i+ M: [! N# j! _' W1 L
从源文件你可以看到是支持中文的句号断句的。
- X* [/ {. G! t* C" J
& r/ l' H& x8 Z" a+ g8 j6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。3 S) p# O. F* A/ f9 l
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。8 @5 [' d2 P: Z/ r
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
3 Y: _3 a/ K( G# d& `6 f5 {/ r/ r8 x+ s

' q( l% E# B8 T# E1 j5 _) o
0 p" V# h& |! |5 _6 ^; e# f

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-10-1 04:53 , Processed in 0.055746 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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