设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 1 B2 a, d7 p4 p  y. @  G4 c0 F! e

0 \& S! l/ f# X3 ?7 M5 b借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。9 C4 V. ?4 y5 z+ m* E
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。; ~. N- |# Z2 n- ], c" w
----------------------------------------  U* ?9 G; ]9 C9 W* j
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
) z  e' b! V7 [( V( l: F' x( E5 [; T在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
) j" l, _% k6 `, `; b----------------------------------------
4 M  r. S0 h/ j: \& J0 Y8 B4 bhttps://github.com/guillaumekln/faster-whisper
% b( F) [4 L2 z* x( I' U7 a2 l+ `安装如下:9 b3 c6 i- ]. T
1, Windows 10
9 W1 f3 V! R) F2, Python 3.10.11
* }/ a. F1 r0 W. W3, CUDA 12.1( T5 Z9 A3 n' h& O' E. m" X
4, 在python 3 中安装6 ~. t) c+ m0 q- i8 q/ `
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1176 s; D! g% w* n# ^0 x
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
$ _" F( O1 e6 M8 ^5,pip install -U openai-whisper8 w. `, y2 Y0 H$ p
这是向whisper 致敬,可以不装
; ?# O7 q! y9 e- l2 H* \6,pip install faster-whisper! S5 e  @' i. A$ u0 l, \+ A, H
----------------------------------------
: f9 o9 B- `! s, l( N/ B0 Pwhisper 我用的命令行,faster-whisper 我用的是python。6 W" o4 F3 i8 S! F' W/ m
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
) s/ @) A7 ]1 T) T7 U  h: ~" q: T( W2 m- @! Q
----------------------------------------1 \0 k; `8 l) w7 `4 r& [
# x; Y' [. m; q! M& T% j& ?( b7 O
from faster_whisper import WhisperModel
" N3 `$ Y; ]  j6 y+ k
4 u6 \" c/ D- umodel_size = "small"3 l; J) ^8 \' ~9 `" q% [

7 q, a5 ?+ M8 b# \% n; @# g5 N% J$ dmodel = WhisperModel(model_size, device="cuda", compute_type="int8")1 `% b7 v( |8 w% |' n4 s

- P6 U( Q3 P$ X3 isegments, info = model.transcribe(: Y6 x8 J+ K  K" r7 |! n% H1 f
    sourceFileName,
( {2 w; Z$ c% B4 |7 W, s  @& d    beam_size=5,
) p) ?* s5 ?! v3 z$ z    language="en",
1 p/ p* d' ]2 `) Y    task="transcribe", $ q7 U5 d2 H: k1 r2 B4 ]+ N( ?/ _
    word_timestamps=True,
  H* G( o9 H5 g6 N# R4 v    initial_prompt = "Hello, welcome to my lecture.")" i1 j: N0 P  ~& ]0 B" f9 e

; E3 U) c$ e; q# M+ u- s0 _+ d- M! hfor segment in segments:
! r6 h+ k. B! ^* V    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))+ ^& A- \: ?9 B$ L& X
; k1 R: L: m- ^$ W8 ?7 ?6 e* s
        for word in segment.words:" }: d6 I* W1 O
                ; ^2 D. ~: Q7 ^& c
----------------------------------------
& D2 g; T! `+ Y2 ?/ _4 V0 o8 l& O2 z, f3 ~/ c" ^
代码说明:
7 \' \3 N" S2 |1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。% M. `+ d% V9 D  q' f3 S7 J/ W- e
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
8 M. n# W% {& C# b2,segment 本身是很粗糙的,做字幕勉强能用。# P7 Z7 }1 H+ s, K1 \
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。* }* G0 N% Q' u+ X8 P. T1 x
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
- l7 y' y0 B7 v# b6 k# E比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
, S- J4 i! f- c' l5,model.transcribe 中参数说明:
: Z+ K- S2 @* W$ B你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
1 ]' X7 r* _. E$ y! `) Y其中: l1 h" ?  c3 x/ `6 q! k9 r
    word_timestamps=True, # D5 C! T( W  b# T8 N6 w; E
保证了你能拿到 word,否则是拿不到的
" p- s7 @: L) \) Q1 {    initial_prompt = "Hello, welcome to my lecture.")
" k$ L+ y. W0 I. p  p5 L保证能尽可能准确的断句 punctuation,但是不是决定性的。$ O$ o% D$ \# s% j- u! H
其他参数可参考源文件:5 U5 K* R9 E* s& O
https://github.com/guillaumekln/ ... isper/transcribe.py5 h! K7 e7 g6 A/ z: k4 R
152 def transcribe(7 a( J' i2 P& r
从源文件你可以看到是支持中文的句号断句的。
1 `) w8 x4 F  n' ], t
' {* f1 H5 G+ `% m6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。: l/ |) M0 s8 k6 C
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。( _7 ^3 K2 Q. e9 ]; L2 \+ b' e, h( m
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。+ F+ l  {  W% L$ i: M. `6 s/ \6 [

, K# D7 ]; U$ A( G: M  t: A/ h
+ q2 S2 U5 _, Q" I7 v0 H3 @) P! I' }$ {5 w. w2 h

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-9-21 01:53 , Processed in 0.065393 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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