设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 " ~2 E! r" y' b  F
. h+ G3 A, v  Q- X
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。8 G& m9 z) c% p
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
8 i' q4 [7 ^  e1 o9 t----------------------------------------
& }" Q4 r1 R& `! T% u2 S0 j. d# t2 G显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
/ x: W/ ~- J6 {在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
6 R* O9 k2 p6 Y, J$ I4 u----------------------------------------
9 I0 A! m. ?2 u: _, Ohttps://github.com/guillaumekln/faster-whisper
: l( M0 \, B- O2 |+ X安装如下:
, `# `7 K. t* N! X; N% j" m1, Windows 10
  P" A0 U: v$ f+ F' k& M' L2, Python 3.10.11
9 U- u9 F0 ~3 w+ U3, CUDA 12.1
8 d8 x' a5 u5 n6 u$ V& B; K+ }. A4, 在python 3 中安装8 l% v- O! ?- Q# q7 C! J3 s2 B* T
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1172 B: b- A  d7 {: y# e2 x
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。6 s* m8 c8 \' J& s- W
5,pip install -U openai-whisper
; e" I1 m* `8 n6 ]% J这是向whisper 致敬,可以不装
! T9 K/ T7 I% t) b4 t7 `5 Z6,pip install faster-whisper9 Q3 a" ]* P6 @% f" t
----------------------------------------7 K, N3 w( L1 g9 P" C- _( D( b
whisper 我用的命令行,faster-whisper 我用的是python。8 Q" o: X* C( d6 u2 o% }- o% B$ R
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:8 B) f4 |7 j) U! R
- X' V" C4 k4 T1 W  j
----------------------------------------. l" x0 v0 Z+ S. K/ s" E7 v$ s

; O2 w+ J& I8 x+ [4 K% vfrom faster_whisper import WhisperModel
5 ]; U( Z) \( A3 N$ [! y
* X  c9 |  X2 C) o6 t$ @" imodel_size = "small"
" t5 ^# |" i, n" p* ]/ L: c0 `4 c. K0 v
model = WhisperModel(model_size, device="cuda", compute_type="int8")
' f+ d1 Q0 i; N; V, R/ n+ @8 A
, D6 z6 a' ?+ d2 y  osegments, info = model.transcribe(
0 S. M% ], j( m0 k( C1 V    sourceFileName,
8 }& k7 ?9 M1 D; x8 A3 z    beam_size=5, 7 I; C% j& c+ U/ f: s+ ^7 i
    language="en",
5 I; K% `" j7 J5 H4 b8 t" B; h+ {    task="transcribe", * O1 \% `% K% O6 L2 v$ u: t
    word_timestamps=True, / }" c" A5 H0 O5 h# c6 }/ e& L
    initial_prompt = "Hello, welcome to my lecture.")! S! F/ J, @7 P! \
0 ~/ \1 Z$ q; S  |; y
for segment in segments:
9 {( C4 c( T) V& [0 [3 u    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))7 ~( l1 b6 J. U/ p( r( H$ q, D0 G( I8 }

1 v8 _9 R3 }' A' N+ ^; ?! ^        for word in segment.words:
, l# t; S3 m, C7 @# \7 u               
5 P: M) d) o5 V; q& |----------------------------------------& h3 t1 j+ m! f! c% I. d& r/ Q

' a9 }7 X* W$ b  z代码说明:( ^* X% _% I. k  I* @
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
1 o; Q3 b, H& Q% r但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
6 N5 d5 t6 L2 o6 \+ H: k. W: h. s+ L2,segment 本身是很粗糙的,做字幕勉强能用。
: \/ P) ?, Y* C; X, \3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。5 q* r9 U4 D& n; G- u1 {, G# B+ }% h
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
2 Y# a$ l& V# E/ |; c* b, u比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
2 T3 z9 R* P4 C) E5,model.transcribe 中参数说明:
5 G: j$ n* w* n7 `) O你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数6 E: ~5 ~& w* M( v/ W3 }+ y
其中, {- y: P0 }! ?: j
    word_timestamps=True,
( u4 q2 l2 W4 M, n1 c9 O保证了你能拿到 word,否则是拿不到的0 s* A4 a9 p5 C) j
    initial_prompt = "Hello, welcome to my lecture.")
$ f( M' |2 J. i( q! x保证能尽可能准确的断句 punctuation,但是不是决定性的。4 M6 u+ G/ N3 C3 @
其他参数可参考源文件:
9 ?4 r1 u* T3 L! G8 E/ Y' K1 whttps://github.com/guillaumekln/ ... isper/transcribe.py
& h8 Y% M. @4 U152 def transcribe(
3 U# m% W  L+ U2 f7 I- H" v9 m从源文件你可以看到是支持中文的句号断句的。
1 H  a, Q. s/ h( h( G6 h, ]) ]) ]4 h! B6 O) V3 q% x* S4 o0 R9 w5 n& B
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。7 E4 V+ F: `& N( W9 K: A, @8 f
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
0 W0 X7 ?; H) {/ f8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。1 O) i0 |0 ?: b, t& ^9 t) e+ |2 ~
  j* W4 Q' Y' {* s7 w9 @6 m% ]
' V+ U/ d: ^0 ]4 M. _9 a
3 z, \9 k$ k+ X

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-6-1 17:23 , Processed in 0.064448 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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