设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 5 B9 X* l5 Y+ |$ e% i

+ r4 @' V9 c; K: m9 g* m1 b借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。+ }6 k* {4 b0 r
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
% [+ W# R9 p' w* [- J9 [3 M----------------------------------------
3 ^2 T+ Z9 ^6 |; r  ?$ h显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。; s2 |/ g* c! f. |5 E2 D( ~4 {5 {% [
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
* b* q8 h8 F4 O7 ?----------------------------------------/ N, f; p( L* j: F; \8 S  e
https://github.com/guillaumekln/faster-whisper7 V% t9 @9 ?+ z( l  @
安装如下:
/ F1 R! E3 r& n" k. p' M* x1, Windows 10
2 n! q- Q. I4 E8 X0 `0 h/ {2, Python 3.10.114 E  p, J  Z8 I
3, CUDA 12.1
9 X8 ^: X9 C& ]! x  V; K5 n8 S4, 在python 3 中安装% W  T) q& R- a: G& b; w) }. ^( f: R
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117/ v6 o, \! v; q+ m
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
4 _5 ?% y/ U5 S5 |! c+ i7 L; f7 t6 n- X5,pip install -U openai-whisper" \0 w* O. U4 j/ {8 b
这是向whisper 致敬,可以不装
5 j4 n( g( j, j3 G  a* c: A2 P; c6,pip install faster-whisper7 K9 L3 _' H/ y- o
----------------------------------------
" R! v* ]; u+ j: S, w3 cwhisper 我用的命令行,faster-whisper 我用的是python。8 [- q/ V7 x# l+ K: v
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:- u( T$ L# Y$ X* _

0 Q7 X, G/ A; q$ d7 m) l) t----------------------------------------' N- g' x. x7 I

* b: R+ G) ^9 {from faster_whisper import WhisperModel
4 C: r* s8 v, q2 \: U9 z+ N2 D# p- \1 O5 v6 L
model_size = "small"
1 C! W7 e3 F: u3 U7 f( C& ]0 [# O' O7 W$ Q7 i! ~
model = WhisperModel(model_size, device="cuda", compute_type="int8")
% {& ^6 g% W: Y1 ]
' r$ X% r4 ?9 p/ ^: K$ fsegments, info = model.transcribe(
' y. g) ], w$ B! w9 ?0 `    sourceFileName,
( M- M, |3 `) M6 F    beam_size=5,
! `. o7 k0 m' E# [5 B2 v) a    language="en",
7 [# \' x9 w* I7 |) @7 g9 I/ H- {    task="transcribe", + t$ S3 {! {  A1 S: o( O7 s
    word_timestamps=True, / D" i( c, \( v* K, G. j- }
    initial_prompt = "Hello, welcome to my lecture."): g  [# t7 ~9 [+ g, f

+ A1 W( G. e# b. ~for segment in segments:; _8 Y: q. [/ W4 ]3 U
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))+ j) {4 v- H8 E9 b4 _  F
" B4 H' S9 `$ z
        for word in segment.words:
0 o0 s. J8 ]. E7 z4 F               
! G* K  p' e9 `. C" Z----------------------------------------6 n0 I7 J0 A( R
" ^; Q7 w2 C1 m8 D
代码说明:
) {- |* _& M2 {* x* O4 M2 O1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
5 ^/ R) t5 |$ B- w但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
* {1 l: ?  Q0 K0 [2,segment 本身是很粗糙的,做字幕勉强能用。% b, R4 i, H# Y1 d' @3 r5 R' q- v
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。; n! V; a' s" ~& @1 X1 @; B' M
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中% k3 }% @; k5 k9 v
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。6 |+ E# t& ]8 H; g1 x+ u& D5 v  S8 O
5,model.transcribe 中参数说明:
" a. n4 ?# k# D) v- \/ h3 X你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
/ C$ x6 O) W) c# U+ b" a8 H其中
4 }) N% g. I: x, |4 I) }4 l% O    word_timestamps=True,
$ D5 ^' I: z% i保证了你能拿到 word,否则是拿不到的. U/ v' K  v$ {5 {
    initial_prompt = "Hello, welcome to my lecture.")
; H9 [8 u$ B( a/ t4 r9 D# J; d( I保证能尽可能准确的断句 punctuation,但是不是决定性的。
  z0 g0 r. z- q$ H; B0 i- f其他参数可参考源文件:, g3 ]( O1 Z( ~8 y7 C! ?; a
https://github.com/guillaumekln/ ... isper/transcribe.py
/ K3 I, G* {. m! p, J7 Q" _! E# m152 def transcribe(
: {  H. Y) R. [1 \6 [+ [从源文件你可以看到是支持中文的句号断句的。
% `' I/ u* i) p+ E2 A5 ]) y5 i2 t% S+ S
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。% A. b$ F! p! E/ m
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
) V* H6 h7 E3 ?# t5 W5 u: G# c8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。+ R  w' Q; I/ S0 j

9 J7 T# L$ g0 f1 r6 s# I
9 l$ _# h) c% Z- v6 i1 k5 v0 x5 [5 {$ E

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-7-13 05:50 , Processed in 0.060275 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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