设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
: Y, J( o2 u1 C, }. F$ b- P6 i$ D
0 o: H4 M4 }' E3 o, ]. i' C借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
6 L0 u) H' }/ {( B+ D1 p效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
$ G4 ?: \* i% }+ T. P1 G- r* J----------------------------------------$ j  z" u0 C- ~1 _, f# n
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。. O' V) C7 a/ o+ |& w
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
* L2 m, s* b8 p7 p) o7 T----------------------------------------  j0 i( l6 k: i. d
https://github.com/guillaumekln/faster-whisper
1 f5 Y/ w* b  |. p, i' ?1 @0 Z安装如下:5 n6 a; J9 S% p
1, Windows 10
/ m# b: Y( r) W0 z2, Python 3.10.114 Y; s  j/ |4 ~5 M" ?
3, CUDA 12.1
2 ^0 U, f; C0 F% E' Q4, 在python 3 中安装  q. c* I2 R; H" V& i
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117. K7 _0 ^, ~* n3 \/ R
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
& C( `$ o/ ^2 A6 Q# _( G5,pip install -U openai-whisper" J! P* Y3 I4 K. X5 i
这是向whisper 致敬,可以不装
2 V' P2 W/ Y) Q6,pip install faster-whisper9 g2 g/ k0 \. A# V% m/ O0 f
----------------------------------------) G: t9 e. L. e( Y1 G! K
whisper 我用的命令行,faster-whisper 我用的是python。7 w* c" J6 E7 L/ l6 I
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:% C. J2 s- x  Q- C3 H
2 U& D+ A$ Q- c8 m
----------------------------------------
" S% s& f# B( s+ B7 R7 X. c
- D& j, K4 U6 V0 Pfrom faster_whisper import WhisperModel
) x6 ]: Y6 E6 T' z# H
) l1 {- w9 x. Omodel_size = "small"
. \( s! O% x8 \- G% o
2 m- ~; o/ a6 tmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
: C6 P' a7 x* R) O8 k; `
: n# L4 u7 ~6 n" e6 rsegments, info = model.transcribe(( `0 K* y1 E4 f/ o
    sourceFileName,
- X* D1 q9 U8 e# ~% r) V    beam_size=5,
" [' R2 r4 E. H3 x  b  l$ t    language="en", 2 {. D0 M9 O8 c( i, h  Y& T
    task="transcribe", - R, ]; `% Y4 H
    word_timestamps=True, 6 g5 L; ]5 o# [# H
    initial_prompt = "Hello, welcome to my lecture.")& z' ?4 ]+ i- v; G- Y( B3 @

+ h/ P3 g/ n9 }6 Y7 Afor segment in segments:/ T/ B5 ~( x. h$ ^3 i, u# S7 F$ n
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))- B8 s5 }' n; e( T. X
1 I6 o  _8 d) Y7 a% p1 Y; o
        for word in segment.words:
; q6 o9 O3 T7 J4 d* P) a5 N               
7 \7 S, I" [0 w& {----------------------------------------( N2 [, ?0 l1 V! z+ F

1 S3 B/ q) C' E8 T+ R8 ^9 H代码说明:
, g* m9 u8 s+ ^# m$ r1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。. H& J8 p- Y; N% w# J: ^1 R
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。0 q2 r4 {: R: W6 s: Q( x" c  `  D
2,segment 本身是很粗糙的,做字幕勉强能用。7 J7 g5 x, g" r9 {4 x3 e5 g" Z" ]
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
! W' |) j: y. K' C7 j" x4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
7 m) r4 G* ]; I! w比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。0 ?, D! d5 u" Q$ x/ w
5,model.transcribe 中参数说明:7 I2 l% C8 X6 I# n. C8 m
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
; J* w- d# r, N其中
1 m: I2 y7 y! V9 n+ J/ }) q' K    word_timestamps=True, 0 X* L: w2 ?0 {) h& p# \9 q
保证了你能拿到 word,否则是拿不到的
! l% x' q2 w: C  Z9 O    initial_prompt = "Hello, welcome to my lecture.")1 [- s( ?7 b" H% {+ d/ n* k9 |
保证能尽可能准确的断句 punctuation,但是不是决定性的。1 a% z& E9 e5 F, u) R. `8 N$ g$ g
其他参数可参考源文件:0 n( a' ?% n7 Z9 ~. c1 k/ S
https://github.com/guillaumekln/ ... isper/transcribe.py
* v7 B3 _0 v9 J: |# j152 def transcribe(
# ?# M* o% Q' n) I- J5 ]从源文件你可以看到是支持中文的句号断句的。/ _4 d/ `# h* A
/ G( ?7 m) L: E( ?" i/ f
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。3 A6 V( ~4 ?3 D6 I7 G; q0 Y
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
+ I. E7 {6 G, z  S1 ?; [8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
7 I0 u  e5 a- i' d1 u9 @! |$ f' r% g  l8 y; j4 n

3 ?. q# s( `8 e3 `, Z$ K5 q  [2 ?2 _4 H  `' F

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-2-21 01:56 , Processed in 0.052530 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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