设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 8 X. b. j: ?& \

0 r* C* \6 k5 \7 P. L借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
; P/ Y. f0 x0 A8 \8 x- {' i, Z3 r效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
# Q' k' E' `1 s. `6 u----------------------------------------( O2 S( i' f( d3 t$ [2 y
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
& o5 B; Z( @% H: `* F# h在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。+ c* N; v0 \# }* m& k8 {1 q8 S
----------------------------------------
0 r5 |# `/ J' u8 ^6 @- ^https://github.com/guillaumekln/faster-whisper
! `/ }0 k6 q: {: k( T安装如下:" |0 V& ~$ k" |. ^- l% V/ K# L
1, Windows 10
% V/ b# N: w; a/ i! U! ^2, Python 3.10.11" j" w8 p5 q' T& c
3, CUDA 12.14 f- V! ~2 z9 ?7 _" Q
4, 在python 3 中安装9 {1 u3 w5 v; I4 m4 ^$ M! `
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
" @, r1 O+ g2 M6 v这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
+ r, ^6 K; j2 a; w4 \( s5,pip install -U openai-whisper
$ j7 _0 W) x" l1 g" r这是向whisper 致敬,可以不装; }' J5 ?+ E7 W7 @: Q
6,pip install faster-whisper
+ _9 L; ?& G; E$ B7 y----------------------------------------
% V5 q. K% A  c' _whisper 我用的命令行,faster-whisper 我用的是python。
% j0 M/ \  Q) {! D下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:) f; k  ~: r$ U4 }

' E) Z8 L+ D) b0 ]----------------------------------------
2 ~. r% {$ u; t7 s) W
9 y- G9 j3 D  U+ t* Ufrom faster_whisper import WhisperModel/ S4 H5 a  I+ V6 e% J+ {/ ?5 J
/ G+ o" L; |8 l9 X0 @
model_size = "small"+ p. j1 S# \7 v* l

# |. z8 D- H2 r* p, j* n. |model = WhisperModel(model_size, device="cuda", compute_type="int8")
" c2 {0 _! Q; U8 m$ N$ D1 X$ k7 f) S' F% Q# m
segments, info = model.transcribe(
$ W' Q2 O5 v: i7 I+ @* b" W. J    sourceFileName, 2 L* k" A8 U6 N* }- e
    beam_size=5,
9 _$ R3 R: M: @1 ]9 d) ]% X    language="en",
8 u) a- U* C; A+ Z. J    task="transcribe",
# ~* \* N1 {1 v, I% h    word_timestamps=True, ' f- x2 b- n9 g8 m4 N: g# t+ I
    initial_prompt = "Hello, welcome to my lecture.")
9 Q. P' L, \4 r9 p7 ~; F& v# C4 z+ N& u4 l% b
for segment in segments:, O$ v9 ], O5 A: W: s& O
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
6 w, Z; ]4 E$ b' e
8 C' M. [' m2 R+ z0 S+ V# b! w7 }        for word in segment.words:& v8 G+ p4 n$ o0 e3 b
               
9 @5 D4 F! F0 r5 f" E. P) [----------------------------------------
4 ?7 _: c4 \; V4 U9 M& v0 K  Q  ?: g+ n7 I8 e
代码说明:% P6 d6 k2 i8 W% J# g
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
: z' e5 i. e, V, Q# h但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。5 f  @" Y" t0 t: ?' ?' Q
2,segment 本身是很粗糙的,做字幕勉强能用。+ H! e$ M$ ^1 T
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
, s7 r- j) A0 h- Z3 j+ S4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中1 b3 c$ h- B& y3 e8 l1 K
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。; A7 t6 |8 B: o+ ~
5,model.transcribe 中参数说明:! C1 v; z* R. P1 y' A
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
8 L5 o9 d8 U$ v& M( Q0 O6 k# w其中
5 p. c1 Q) [7 S" t    word_timestamps=True, ! Q2 O4 \' w, x% r# R6 |. @: i4 o- s
保证了你能拿到 word,否则是拿不到的. M8 c; D$ G/ I5 q5 N7 }
    initial_prompt = "Hello, welcome to my lecture.")& M& h; a7 Q# T6 r+ c- y
保证能尽可能准确的断句 punctuation,但是不是决定性的。  N1 f# A2 H/ m
其他参数可参考源文件:3 Z, c7 r4 d( `* ~: a6 W3 [2 k
https://github.com/guillaumekln/ ... isper/transcribe.py
! Q) ~6 A# C/ ]" F152 def transcribe(
/ y1 \% j8 B( D6 p( N. ^从源文件你可以看到是支持中文的句号断句的。
, x% n1 n7 w4 |* r* X! E, W, O$ @# e# [4 s$ a! R, v5 [) E" v
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。4 y2 `; ^) L0 p9 ]
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
* w) s$ D' U8 p9 u+ T8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。0 y1 ^) [& G8 U9 Y
8 C" O/ W7 N& n2 x

$ G6 V) M' ], U! X2 C* r; @" s  j- m& k, j- R* E

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2024-6-19 00:31 , Processed in 0.033701 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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