设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
) M& q& Q, N& k% ]5 _" b0 n4 q( }3 b: c
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。# ]+ q  n" `  p( A& ^1 F
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。. q' ~( s/ L7 [% q! n
----------------------------------------
% C* O' T* y) Y- [显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。. b& N5 q; r8 V9 _$ v
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。# f. L) ~; v+ r  ]
----------------------------------------
1 u! \$ D& J+ v1 w( n; ghttps://github.com/guillaumekln/faster-whisper  J9 Z9 B' `& T- E9 U% i
安装如下:( g' T: ?! u! y; K# o5 I6 R2 t
1, Windows 10* ?) ^# E+ e& w4 y; h- d
2, Python 3.10.11
/ R; Q; v7 o! H, u& p" e0 B* V3, CUDA 12.1
4 M8 h. a+ _8 h% x! R% }# C7 P; Z; k4, 在python 3 中安装
1 \9 e4 I, [3 Xpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
$ A: F5 G1 B  C这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。. L: i- U# M; w& w' {
5,pip install -U openai-whisper
1 I; ~1 M# ?3 a. ^( F3 t) S. M这是向whisper 致敬,可以不装
: X2 k0 n* ?) Y+ B  _0 ^$ _+ G6,pip install faster-whisper9 Y3 k: z# M* h/ ~/ P* G* G/ W1 L. R+ ]
----------------------------------------5 Y# V; N2 p  A0 n6 |6 |) d6 R
whisper 我用的命令行,faster-whisper 我用的是python。
* U& S; n  n3 e7 l4 ?: b下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
' S0 h* T8 R* U' O; s! f
# q/ L' b- Q3 O, O9 l----------------------------------------% m2 s" R; X/ u6 O+ i& X+ K1 c, `* `
$ _4 f; y! s6 C3 o
from faster_whisper import WhisperModel7 e" V! C% M1 X

2 s( G0 D5 y3 G7 u7 ?7 rmodel_size = "small"
9 q" ]6 |4 @2 t' f  J; S$ P' t% D% u. H8 ]5 j! |% W: O3 Z% U; z
model = WhisperModel(model_size, device="cuda", compute_type="int8")
- u/ A0 K: |; }( L* \7 d) N8 R0 a2 h( {1 P& \, y2 b9 ?$ j
segments, info = model.transcribe(7 H; Z$ E, K3 \, N9 I
    sourceFileName,
! u# A; n7 x( ^  Z; w2 V. V  w    beam_size=5,
4 `  e2 R- a8 G# z5 X# c6 {    language="en",
0 t; m/ C1 n3 z$ h" c4 @; A    task="transcribe", - ~5 w' E* c# ?5 h/ L5 f
    word_timestamps=True, 0 O" i) t1 g: w) {
    initial_prompt = "Hello, welcome to my lecture.")% W5 [' \# d- G3 v/ [; b
- o5 W5 @$ \! a/ s2 ]- C" @
for segment in segments:( r7 C# p$ B8 N
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
+ \1 h# Y% [2 |1 {
3 \, e7 H1 L1 R        for word in segment.words:
# q4 U9 y* d9 K' L' P$ m- u               
4 e0 X4 v- @  y% O5 F----------------------------------------
. \: j$ I' m% V/ x" W
0 d' ?+ ^9 }, E* W* h代码说明:
  E" w& `3 T  v$ l0 t1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。6 ?0 `0 t% H/ L; L. n
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
5 m+ c6 w4 e+ b  h2,segment 本身是很粗糙的,做字幕勉强能用。! q! S% a* j2 ~
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
  X. ~5 E& k& E4 y& }4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中3 P: _1 w  _) k
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。* O9 D, t- S6 E. z$ r: W
5,model.transcribe 中参数说明:9 a! a  ^  t+ Q# [2 f
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数7 G5 c6 |* q, [9 t7 {1 c+ K- s4 ~
其中0 h: g! O9 q& B+ B5 ^
    word_timestamps=True,
8 R$ J) G% n9 q0 b, K保证了你能拿到 word,否则是拿不到的4 k& j( W; E& V9 c7 z
    initial_prompt = "Hello, welcome to my lecture.")% H/ A6 b+ r* Y7 q
保证能尽可能准确的断句 punctuation,但是不是决定性的。4 G" q" G  p& _# g7 j
其他参数可参考源文件:
( @* n% d; k1 F5 N# t, l3 q1 X, ihttps://github.com/guillaumekln/ ... isper/transcribe.py
# ?# n. h9 y0 [152 def transcribe(
  }8 U; {0 ^$ a! |* C$ _3 T, [从源文件你可以看到是支持中文的句号断句的。4 |, M$ x4 Y3 m8 |8 a" E" h
' _( C, \! `9 k5 Z3 W" Y' D
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
: Z" V2 t" G7 E, C7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。/ K: l& Y2 J3 [1 v0 e
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。9 b# O" c- g: b+ K
+ w" C1 J9 u* r) f( X
/ T& y2 N) M0 I: h. n: v) d

6 b, s6 ~5 r" G4 x  p* [8 M3 p

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-1-22 19:07 , Processed in 0.033093 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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