设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
6 B4 ?* ]7 a+ S; A+ p' a+ h9 m: r* p! ]3 v5 |* t+ P2 b/ R
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
4 D; ?0 o( e. `3 Y; Q效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。. |  d0 j( z$ L; s9 E% n
----------------------------------------& J) M8 L- J0 {
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
# g) e# d6 r0 e0 r0 x9 }在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
" D! r% g' ^4 |+ D. v, z----------------------------------------
6 d- \; e) P0 r" ohttps://github.com/guillaumekln/faster-whisper: C/ g2 T: r+ S3 W
安装如下:
. U0 h9 H$ g4 m0 A6 X1, Windows 10* b" W9 w6 j( I  y, O0 M
2, Python 3.10.11. @, I4 |  A  m) f' j9 F
3, CUDA 12.1
1 l0 H- ?* F7 z4 l) g" K6 f4, 在python 3 中安装
& N2 T3 U* {5 }: N4 xpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117) g; b8 h, I; j
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
/ E# G( a' _# M# E5 [5,pip install -U openai-whisper
9 C; P. [$ j1 q# l3 n* c+ R- j这是向whisper 致敬,可以不装
/ L, H5 d: C8 [0 v9 a0 B' S6,pip install faster-whisper- a. u9 m) o$ M0 q' c5 y$ k
----------------------------------------: i$ t( D! K% O0 D8 g$ M' \, s7 z$ `
whisper 我用的命令行,faster-whisper 我用的是python。# e; H9 ~, B: H% n" J
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:; V* r( q7 W: D. }% g7 w4 ^1 [

! q! j" g! _, J9 M7 J! V+ o----------------------------------------, f: [: j  c: ^
, B$ R3 }7 U+ C6 Q. u
from faster_whisper import WhisperModel! s  _, n5 w! P3 w* y( J& Y  B
' _" q  F$ D1 L2 v2 I2 I/ U
model_size = "small"4 @+ u" c/ L* L! A

+ O, l' g' h- [( Emodel = WhisperModel(model_size, device="cuda", compute_type="int8")
/ ^0 P4 }- ?7 o( D
8 H& h' T1 ?" B& l6 I3 Usegments, info = model.transcribe(
4 c5 \0 o+ w4 {% ?  t    sourceFileName, 1 @' w' a8 Z9 L$ o% s7 m% b- S" u
    beam_size=5,
* F1 _3 o- s* b; T2 R- t. J/ m    language="en", & J# [$ [' F3 p  [% \/ F1 L# \9 x
    task="transcribe",
. j$ F3 W8 _' C1 w# @- k    word_timestamps=True,
5 D4 q# K, ~0 W4 o8 T4 L    initial_prompt = "Hello, welcome to my lecture.")
& F4 ^( C8 o3 W# e$ q( R* n# N7 [# {3 O
for segment in segments:
3 B( F: _5 S7 x( Z, |1 B    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))/ ~* t( L0 d$ L5 x1 Q) I

* M1 ^8 q6 H6 J3 t4 j% u  Q        for word in segment.words:
7 r$ A  W& b! j9 O0 M% k               
( V# D9 n' E& W% C----------------------------------------' P: a$ N6 y' r3 A# c

! G% b- |5 y/ k0 B* C9 a# e. U代码说明:
; [/ i2 V# r+ R0 W6 q$ L) o1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。9 v3 x6 @, N2 k
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。# o% Q/ a+ s- H% ]( f  H" J$ ]
2,segment 本身是很粗糙的,做字幕勉强能用。
# a+ E. L: \: c9 s) X0 I+ J! [3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
/ Z5 [6 i4 {  ^  G+ I3 G4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中5 J2 ~! j5 L% C+ b( I
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。8 M6 B+ a+ x- n; _& H! S" B$ q
5,model.transcribe 中参数说明:
3 B- c  C$ Z' |% {/ ^) }. c7 ?你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数8 l$ q' P, p4 F
其中3 k; r- ^5 Z4 ^' @) u+ X: {/ M* S
    word_timestamps=True,
! a( n4 r% x& I# d保证了你能拿到 word,否则是拿不到的5 \9 n6 C/ M% B+ V+ _7 g' g
    initial_prompt = "Hello, welcome to my lecture.")
5 \9 X5 E0 z& i4 c7 e保证能尽可能准确的断句 punctuation,但是不是决定性的。8 c0 E* @% ?, X3 x: z8 ?
其他参数可参考源文件:
3 ]0 A% s9 [5 h$ }) b/ Jhttps://github.com/guillaumekln/ ... isper/transcribe.py. Q% O; s8 p+ I' r5 H# U- M) u
152 def transcribe(9 w; L" `) X% n! ^* I8 p" j2 k7 l9 q
从源文件你可以看到是支持中文的句号断句的。
: S0 K! q7 d" B1 o+ i% O, G8 [' R+ M+ L
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
# |) J7 e& E9 O+ m, x0 N" ?7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
9 |0 v! v! s5 Q  N; ?8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。, [7 D6 Z$ \0 L4 r; N; D. X/ j
, J$ y( x+ Z% N% w* \

" R: ^  _0 [  i. p+ R
; T! F& J1 n6 [

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-10-29 14:51 , Processed in 0.028633 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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