设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 2 O9 D* W' @& I: E
$ y! V, f. W6 r+ x/ H9 q, a
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。+ ]. [$ Q& {; M) [
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。( H1 G3 `3 R6 ^; A+ v! ^3 _
----------------------------------------$ c+ V) p/ u# |9 u3 b$ M
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
7 S: s+ z6 X; b1 G; I, M在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
: O) J+ i+ \% _; `. u* w1 t+ W8 ~* X----------------------------------------3 e1 D. ^4 n" y- j0 d2 V# M
https://github.com/guillaumekln/faster-whisper" V/ T. e2 V- ?/ |/ I% K
安装如下:
& ^( w: _# L  N$ ~, P/ G1, Windows 10" g; o( ]$ D2 m8 `' q3 R
2, Python 3.10.113 T2 p& t: n4 R  l7 M% E
3, CUDA 12.1
+ Y8 [4 r4 W6 h9 j- J4, 在python 3 中安装; t; m9 U7 C. a; s* a/ B+ V
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
, [( B* D5 N6 e6 y8 h6 K这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
# n8 z  [6 K6 d3 Y5,pip install -U openai-whisper8 _0 v5 B5 c6 q% A9 t3 x
这是向whisper 致敬,可以不装
* h" F' _* z: F+ t( l3 Z# m6,pip install faster-whisper
: ?% y) [: }0 I6 ]# S2 V1 G----------------------------------------
0 n9 e0 E5 M9 t8 c$ |whisper 我用的命令行,faster-whisper 我用的是python。
- V% b7 }9 z8 D7 Z8 y! [6 |下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:) I$ Q" r) Z$ ]7 o# ^  [

; u+ O, |& T$ ~1 G9 C0 \. q6 G# W----------------------------------------% k, S3 J( V9 C

. J, V. K* H2 B7 Q+ v/ Qfrom faster_whisper import WhisperModel: c& w) Q" ^- |* f' ]7 M

+ Z4 u4 r( [( Z% c3 V* l. Xmodel_size = "small"  b$ \: z2 D7 R" i: C5 K

6 V4 m# `. N0 u& E# q* umodel = WhisperModel(model_size, device="cuda", compute_type="int8")- N$ |% T+ G2 {/ A4 g9 ?5 e

! `( f+ t+ E+ [, w/ E* X- Osegments, info = model.transcribe(' }; }. E, L4 E
    sourceFileName,
( X; }3 t2 O: n- _/ q    beam_size=5, 0 w2 O/ m. O/ P2 n6 s+ Q2 I  \: ?
    language="en", 1 t! t" {- h/ P3 d" m8 ^% p: c: {
    task="transcribe",
. P; t, |$ i/ `* @' X) n    word_timestamps=True, $ h+ S/ e8 Z2 v
    initial_prompt = "Hello, welcome to my lecture.")
; ?3 c: {+ G+ i2 I2 X# f- B" S) U% z' t' p" p& A
for segment in segments:% p# ~4 R  _7 ~* j3 |* t
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
7 F2 }4 k  d( i+ j/ u) @; p7 X* ?4 K6 b
        for word in segment.words:3 X) T! U2 j# Z( z. G' O
                0 N  F1 p& r7 V7 a6 i3 O6 e/ q
----------------------------------------5 R( k! e: t" @2 \  p9 t
; {! i4 g) s: x
代码说明:
' e' Y6 G6 W, E4 g( @) Y1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
- C7 y5 [' I2 m( d9 b但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。' D8 H; S% U: ?+ F
2,segment 本身是很粗糙的,做字幕勉强能用。
9 P6 [2 W# |& \5 M3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
' s5 x% g2 Q( k# W$ `4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中5 k: z0 h3 [  }3 A& ~
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
1 u5 |0 h3 W! I$ \5,model.transcribe 中参数说明:
$ ?; Q) c) n* H: C4 m" v你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数5 y8 R  }. e6 ^1 h2 n; x
其中8 r2 u1 Y1 \" E. m: n) `' r
    word_timestamps=True, $ k$ L3 i3 s* E6 c4 C) `+ w. [
保证了你能拿到 word,否则是拿不到的$ H% D, j: ]3 j7 e* b
    initial_prompt = "Hello, welcome to my lecture.")$ R$ t" M# X: D! c
保证能尽可能准确的断句 punctuation,但是不是决定性的。% S7 g" F% Y4 U) O4 e3 _: y: r
其他参数可参考源文件:
% W! ^/ D; h- \7 thttps://github.com/guillaumekln/ ... isper/transcribe.py" c) Z. d( _" v3 Q
152 def transcribe(
" e; h* w) ?2 E+ }- X3 `从源文件你可以看到是支持中文的句号断句的。
- [3 R8 |0 o7 r2 W# W2 o% x, P1 S7 H8 I4 I
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。( q0 `5 y% l0 o- O( T6 b
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
7 \: Z! D( h1 T$ d+ O$ L1 F% E8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。2 j# O0 z3 {+ [- B( L

$ G# z- v# J% P
' `, o* E0 ~# b. A
, T7 q7 A8 J6 Z

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-2-4 16:01 , Processed in 0.057263 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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