设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
2 f$ u, h& C5 W. W; v8 K. r. Z: c( `8 o5 `' l" f& Z
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
- E0 w8 A1 T/ z: k+ r& ]6 i效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
& N. z& {& e, u" `6 ^& K: a----------------------------------------
% R9 l! T" }1 w! w9 F  Y" e显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。# H% e2 n+ ~# a
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
! L, O% x2 Z7 f( ?5 [7 ^----------------------------------------/ |$ r& v! ~# l
https://github.com/guillaumekln/faster-whisper0 V7 N3 d5 ~4 {. C' i1 D2 [
安装如下:4 @' i; e$ e/ j; M9 Y
1, Windows 10
/ G& C% ^# T* |- ^& P2, Python 3.10.11& a2 U7 m4 Z. t  u4 `; o: x
3, CUDA 12.1
' L2 }) L+ Z; z. N- _4 _4, 在python 3 中安装
# K: T  X, x8 T% Cpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
% C3 {1 a7 j# W3 C, i  r这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。- B+ U- {; _- j# m& r0 g2 Q
5,pip install -U openai-whisper8 s$ k! |  t% [1 u
这是向whisper 致敬,可以不装% T6 C; f- l$ ]2 W/ e; F4 w1 r/ R
6,pip install faster-whisper
5 ]" k% S0 i4 ?2 }5 t* ]----------------------------------------$ U" [, Z; b3 k7 C4 F& _8 p
whisper 我用的命令行,faster-whisper 我用的是python。
) [  @7 K/ d& B# w; L# \5 y下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:' O% U+ y  d& f$ l( m
8 d( g% U8 F- M0 ~1 i4 P# J' D9 E
----------------------------------------
' p6 ?6 ~0 s2 j2 ~2 W; a% n  `- i( E5 k6 m9 M' k
from faster_whisper import WhisperModel/ d6 Z+ c% n2 t6 R0 Z

- t6 I* W( W% ]2 G, p+ P+ hmodel_size = "small"
* \2 k  F# ]' {) \
9 e8 F0 b4 S: c  R# Omodel = WhisperModel(model_size, device="cuda", compute_type="int8")
$ ~; ~! m* _# R6 h, V1 P" X& d) L, C$ V: C3 o4 I/ h
segments, info = model.transcribe(5 T' z( J. n0 E5 O$ F$ K( q4 H" L
    sourceFileName,
+ N' W' |1 F' G' t5 l/ g8 b    beam_size=5,
6 l, G; G1 _) J$ x- q- ~" N    language="en", ( _8 Q* C6 ]3 G' n  x4 ]
    task="transcribe",
# e6 L7 {. @1 D3 C* J- o& h% R6 N    word_timestamps=True, 0 [7 ?4 d2 L8 @5 A! Z
    initial_prompt = "Hello, welcome to my lecture.")- g- l6 q/ n8 ]- l; w8 x

; b# V; p6 d! [# d# F) \% Ufor segment in segments:2 j5 S6 C% [' m2 r/ w* S
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))3 P& w3 M9 G7 v; t0 C: G
6 u% @) @" W' A* f' l+ N
        for word in segment.words:
. g; {7 n5 l0 Y' m9 R" T+ L                  ]  |; L6 O( q, q- s% ^  M
----------------------------------------
3 F! K( ?( x* @& M& R" A& n* N6 @! v  E$ W! X5 k
代码说明:
. E; c/ L. l  e, i0 @1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
" h1 T0 h. @1 e' K; l1 b2 b但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
1 M: d6 Y3 P% [* k9 `2,segment 本身是很粗糙的,做字幕勉强能用。
7 C# Y; X0 J% I7 u% ^! X5 ?* d0 [3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
; K# I" ^+ T; f: O4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中+ G: p1 g: v/ Q2 l( Y8 F. X: ^
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。+ u. f  A4 Y9 N4 x8 ^# ?, |
5,model.transcribe 中参数说明:
7 Q4 R( k/ x; [7 r  ^, E/ U  G你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数; e: w) E9 v7 K
其中
# |/ r  W: T% |' A' y    word_timestamps=True,
* t3 @( c4 X1 _$ _5 B- q保证了你能拿到 word,否则是拿不到的
- o* s' e, f% Y    initial_prompt = "Hello, welcome to my lecture.")
' e+ I, ?: l/ U0 j1 d保证能尽可能准确的断句 punctuation,但是不是决定性的。. p: N1 n( y  |. D$ u# I
其他参数可参考源文件:& G* O$ [; s! v/ K. c
https://github.com/guillaumekln/ ... isper/transcribe.py& T/ i! k- z2 E' {1 b0 e* u( O0 F
152 def transcribe(% g( ]; |6 ~- r. ^1 `
从源文件你可以看到是支持中文的句号断句的。
9 Y( r9 J! d' n" t0 d7 Y/ m3 ]
- u3 ^. m- U% \& j6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。% `+ L' \% c$ U# z7 _! x
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。" ~9 Z0 z$ `/ O( {3 |
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
( ]* U: _2 |+ Z- _' ^; k# M& y9 N- \) `, z! y4 y$ L

2 {0 D" Y" H, X& A. G' [! \/ [8 W# l- Z8 i$ B2 B

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-26 13:09 , Processed in 0.068784 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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