设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
4 J4 ?9 R7 Z9 t; ~5 Z' e
: R. P; c1 a# I+ |  B. K; _借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。- b1 T& ^1 X7 j- q% l% G
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。  [& N" s% E5 ]& k. }: a9 O: }
----------------------------------------
# r$ p5 [$ s+ b显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。& V2 H9 d9 e6 g( r+ O5 ^
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。4 ?/ m' E  E* r6 H9 W  S! ^) v, g2 m
----------------------------------------
$ ]# i/ s- @( ^6 X( [https://github.com/guillaumekln/faster-whisper( E) O5 E7 O7 C, n5 e5 F, U
安装如下:
: Q% Y1 p0 `& q% f' b- @1, Windows 10
5 L7 `0 K1 I, p9 g  B4 {2, Python 3.10.11- v4 j# I( V. m* ~1 X
3, CUDA 12.1. G0 J3 h' \& g" \& _2 Q1 i
4, 在python 3 中安装
; V% X7 D5 U" Z  npip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1173 G6 W3 J- o1 t0 ?+ `; w
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
1 \; Y; a1 Q7 M0 g% d( T5,pip install -U openai-whisper
' i2 a6 u* x6 i, z; b4 U这是向whisper 致敬,可以不装+ f" F) O1 S* k1 V
6,pip install faster-whisper
. o$ }  Z+ g4 ?. v% n/ Q5 Q4 c----------------------------------------
4 n, ?8 U0 O7 [0 K5 dwhisper 我用的命令行,faster-whisper 我用的是python。' x. \- \  S5 V2 v* k% t, n$ a5 T+ A
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:7 ]; _- h  `2 l
. R1 V2 R) V0 D# _
----------------------------------------
  W0 L8 W+ m  K, A. b6 I4 L" i5 b! y6 a
from faster_whisper import WhisperModel8 q8 ?9 |2 B0 `# Q4 z

  Y' Q  I; T: g1 @+ t, nmodel_size = "small"
0 V1 q. [& A0 ~6 l3 b+ \; e
5 _$ q1 j% y" b- Umodel = WhisperModel(model_size, device="cuda", compute_type="int8")3 ^/ p8 R+ [; Y( Y: Y% P
: b6 B2 e) k% q( ^, o
segments, info = model.transcribe(6 j+ H$ k/ ~7 F% Q& G2 \8 H
    sourceFileName, & t: |( W0 [) i
    beam_size=5, 2 ^6 C8 ]0 D8 `' n8 U
    language="en",
" @" }  f# a3 u    task="transcribe",
5 C5 l/ g5 e% ^  g9 D    word_timestamps=True,
6 ~$ B" l9 t3 y- v5 ^    initial_prompt = "Hello, welcome to my lecture.")1 m  n8 h+ Y& b9 k  G: N

2 Q2 U, I3 i# pfor segment in segments:1 [" f4 p" \' I$ i& H7 j, s
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
* F+ `. T! e  ^7 Z0 E
7 ^' B" D  n2 w7 g' Q: F( C/ Z1 Z        for word in segment.words:2 [5 h1 }6 k# j; F0 L
                6 r! u3 b: i) Q1 ]+ T1 V$ ^
----------------------------------------
5 {6 G. o3 A; ?8 J4 p! ?
: e% T2 G" _/ G- F- r代码说明:, \$ ]) `4 b$ \) L/ j- a- [
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。, B/ t; \2 f4 i; |& K+ I
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。4 K3 u* m, A! B8 }* k
2,segment 本身是很粗糙的,做字幕勉强能用。! w: U3 t0 [, j+ K  e# M
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。3 e  ~2 ]" u: C& w% ?
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
. |3 z3 m$ q5 O& @: r$ Z! X比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。. G% ]1 W3 q; e3 E
5,model.transcribe 中参数说明:+ D7 e- M' {' P+ W) K0 E
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
5 W# A  a) A3 H$ P其中2 b  _# y; j8 m% P
    word_timestamps=True, 9 d4 z# p8 |  r1 ]% ^# ]# {$ ?+ l
保证了你能拿到 word,否则是拿不到的
# }# Q4 P8 C* z2 ?    initial_prompt = "Hello, welcome to my lecture.")
+ _# W9 k4 y- B. d$ n. r/ Z+ k保证能尽可能准确的断句 punctuation,但是不是决定性的。
! y) d) _$ h$ B* Q2 V其他参数可参考源文件:' N* D: b- n- F' Q
https://github.com/guillaumekln/ ... isper/transcribe.py
& L) l# i9 X) g* @% {) K* I152 def transcribe(
& \; {: K3 e5 e  D从源文件你可以看到是支持中文的句号断句的。5 X* s4 y0 z* a# K* m

, {/ f# N* x  I* @6 b/ y: g+ Y' R6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
' Q# N+ P+ C# b# Y3 Q2 X) Y0 w7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。: D0 p5 a+ `' Z  x3 [& G) Y2 y8 ~
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。. G5 b) f  X/ s# T" Y
- l: f3 n4 X1 z# ?7 j; {( L

: k3 k0 o2 k5 L5 S7 ~
* _% z5 F& ~4 ~2 e/ U1 U0 x5 k

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-3-22 19:58 , Processed in 0.060336 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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