设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
$ X7 ~& ^; S& }% e) G' O; L5 C2 H& X) ?
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
9 k; N4 A4 F8 q- r) g0 ^" ?3 G+ W效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
8 o1 Z& @: {- m, _- ^/ \/ M----------------------------------------* T% I. d4 c( g  Z
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。9 l1 X$ t6 w# l$ C( S9 d
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
+ I! z1 F0 n* l. {8 m----------------------------------------
. k+ N: w2 S5 k# zhttps://github.com/guillaumekln/faster-whisper
+ I% j$ F' {. t) k安装如下:
- \! P; @) z* P! r1, Windows 10  T- p1 z' j' j# `' I5 K8 a$ m+ f& r7 \
2, Python 3.10.11* j5 U- X; k2 o& h
3, CUDA 12.1
7 L0 `" p/ P3 a' J4, 在python 3 中安装: ~. O+ b# z( b7 Y: O7 C! ~2 E* F
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117. i) H0 d% B9 C- Y/ o
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。: `# g- ?" N2 G- A
5,pip install -U openai-whisper0 ~: t3 P! ]7 W' @% |; F# {; K( y
这是向whisper 致敬,可以不装
0 G. ~3 y1 f( B1 z& A* ^" j1 i. |6,pip install faster-whisper! \( x2 }- H$ e4 O; b$ U/ f3 y
----------------------------------------7 D5 j9 i3 p; i, l' h
whisper 我用的命令行,faster-whisper 我用的是python。2 {4 {& \: \" O/ f# v. X
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
  ^) v- c) J9 T
  F( \, g! ?8 g! o----------------------------------------
8 r- J  o. f7 f5 j4 }* {2 S+ y- \( p! U0 [; ?3 ]
from faster_whisper import WhisperModel
8 A7 f, f$ Q( L1 ]5 Z% t% x& y4 k8 q4 k7 ~- \9 v# m% |
model_size = "small"4 v, h1 f0 X$ U& c3 H% q

/ ^9 s# X4 p% k/ m/ ^: ^model = WhisperModel(model_size, device="cuda", compute_type="int8")
0 j& O' ]. m3 s* [. t2 z2 L0 ?- S. J* H0 |* _2 A
segments, info = model.transcribe(
6 [% F8 y7 y9 [- `5 n# g- }, O    sourceFileName,
. s  c/ t0 y& g    beam_size=5, ; w$ g3 H( \0 Q" h& z* P
    language="en", : e  X, @2 F$ ?/ @* i3 l+ r
    task="transcribe", ( o& c/ j" @. B0 @2 ]
    word_timestamps=True,
/ i1 A; x2 k: M0 V    initial_prompt = "Hello, welcome to my lecture.")
& D1 b0 a. y; P# r& K- X% N
& N1 P2 e7 q; s% {( J. Nfor segment in segments:
5 L3 t$ N3 k8 [2 Y- T: X6 e6 X    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)). W) _+ B- y- z" m# _* B: w
* u9 z; P: c+ S) r, f( N/ H
        for word in segment.words:: K- R; I; t8 c/ B3 t
                0 t2 o1 N9 X  Q& D0 U0 V) l
----------------------------------------
' ]3 X4 F/ o" ?" S) k9 {
: S  t/ d+ T8 }' m3 R0 ]$ v. W7 w6 C代码说明:6 [3 M1 I6 F4 X0 @4 G
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。6 i; e8 _: B1 j3 r3 Z: ?# d. R
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。: b2 z. w' y" k; K. N$ p
2,segment 本身是很粗糙的,做字幕勉强能用。
* U% y+ n" s6 q* z# N/ x+ ?3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
: w5 ?$ N0 B6 Y$ u4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
! n) R2 q( C( [' O* J比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
3 u$ H: n% `/ E5,model.transcribe 中参数说明:! d- c6 [2 _( g6 s2 p6 I
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数6 k2 r/ B5 S4 B
其中
0 ]* E* J& i6 |- w+ N    word_timestamps=True,
# i  N$ G% F9 m- F+ k保证了你能拿到 word,否则是拿不到的; x+ o  {7 @1 o5 }& }2 _
    initial_prompt = "Hello, welcome to my lecture.")
$ l: m* b9 i0 U. c  T8 a( V/ X保证能尽可能准确的断句 punctuation,但是不是决定性的。
7 R+ B' n9 ^9 D# i9 P3 i6 C其他参数可参考源文件:  I$ }5 i2 K: v# ]' I' {
https://github.com/guillaumekln/ ... isper/transcribe.py
: x! l& ^5 t1 R& ?. z, ~& J* z  `152 def transcribe(4 S4 s$ J) o9 K5 e
从源文件你可以看到是支持中文的句号断句的。/ a5 R  c6 @- Z

8 n+ m6 W& o6 C- i) F- o$ r+ ^" j, i6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
  z$ R: U  E& V4 |3 Q, Q; l( K7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。* t% I1 C2 g( j; z' ^" q
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
! Z% J& n& Q) M7 b% G2 m  u. _9 F+ D+ D) u7 `

1 |  P1 L  x9 ^* D4 c! O- Y
3 x( ?1 i% k, |: F& P

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-10-15 11:23 , Processed in 0.063997 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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