设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
! {, d4 q, [  j: h* I$ b. A9 L- i
" a7 ~$ t2 z1 H. Z: X6 A9 z4 N借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。0 U, r9 C; _7 a& O" o
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。* t: V8 x/ I- V9 j
----------------------------------------" m! C2 o( l6 A
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。1 K+ W! h$ R# l- o( Y
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。7 l8 ~$ k5 ^$ h# o! {  W
----------------------------------------* \0 c* U2 q* v. b, O6 {6 X
https://github.com/guillaumekln/faster-whisper
5 H9 h/ ~9 d* N9 U6 B9 O0 q安装如下:
# ^. o7 K/ Y- |+ ~" u6 Z3 ]4 o- H9 o! K1, Windows 10
" ~; C8 W2 k( Q0 u: ?, |- q2, Python 3.10.11
% N$ J8 n/ _; w0 ~; I3, CUDA 12.18 i' @9 U7 y0 X3 ~: f5 I) p
4, 在python 3 中安装9 Z8 u; y1 o4 y6 h: s; |9 b
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
; W. }( |: W$ A- s4 c这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。* v1 U1 g) a/ Y5 ]
5,pip install -U openai-whisper
( L& O9 U/ Y; F8 u, r, ^# n2 x5 d这是向whisper 致敬,可以不装
5 U7 g0 c5 E3 w6,pip install faster-whisper
- I' I* \5 J0 Q$ F* I----------------------------------------
+ ^4 L% j/ [: w! }! p) W$ i% gwhisper 我用的命令行,faster-whisper 我用的是python。
" R4 E! R5 h& ]0 G/ ?+ s下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:8 O" I' @) w4 `3 l4 i: X

% W, [6 W7 N7 m! T' s2 z4 c. L5 V----------------------------------------- X6 U$ d" o! u/ M$ i! y9 b

& P9 m7 Y, z/ v& t& N6 Tfrom faster_whisper import WhisperModel
" E( P+ q, W3 d- }5 X
6 h: N$ Q1 S4 b$ |4 Emodel_size = "small") R9 I! P( d+ q2 j; F
% l1 ]+ U' \# J) k' L0 [3 u
model = WhisperModel(model_size, device="cuda", compute_type="int8")
1 |. x& u5 A0 r
( k; ?/ p  K0 _+ F9 ^* W- Q/ @segments, info = model.transcribe(
! ^- r5 |. A( P4 m- R# v2 L    sourceFileName,
5 w( W# P+ `1 L/ ~5 ]3 v4 m    beam_size=5,
0 X9 e! u) c2 I% s    language="en",
) p4 S( K) Z; ~' H# i! {    task="transcribe", 0 O& I5 u; A' x
    word_timestamps=True, 9 e# h" n8 @- O: p0 N
    initial_prompt = "Hello, welcome to my lecture.")
; Z. F+ q& s$ Y
7 n& H0 Z( u" L3 y, L, \for segment in segments:- Q* |* J- K$ O6 S
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
' t, ?, O* O7 J3 q8 D1 j* x' ]& [
" u; R0 u6 C. i( e0 P        for word in segment.words:
$ V9 L7 k6 |9 j' L: y                / b& O3 J" n/ l* d
----------------------------------------4 K, u4 Z: z# w" S
- K0 w3 t7 O* T- z6 D+ Z# ]! j! [
代码说明:
+ ?+ Z5 X1 D( o; H9 {  ?1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。: K& D) a1 J& O2 o
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
& Y, j8 V6 }" |- C% W- T  n2 L2,segment 本身是很粗糙的,做字幕勉强能用。" k% r6 x& {$ m, ?
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
/ c  }0 t. t* O4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中0 Q, {/ l, j7 W2 Y
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
3 G3 j* D6 S9 i8 c5 F9 R+ O! ^5,model.transcribe 中参数说明:
! T% g0 K( T% H  C你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数8 J/ q  W$ e+ O' c0 S; @. g0 X; q
其中' p/ I/ Q/ z4 g; s) u- u1 X
    word_timestamps=True,
% E+ `9 S' E5 F5 ^5 A7 o; j保证了你能拿到 word,否则是拿不到的. y& S1 `* h/ p7 O( _
    initial_prompt = "Hello, welcome to my lecture.")- j# s4 K1 K4 h( n  e5 O
保证能尽可能准确的断句 punctuation,但是不是决定性的。- b( a0 n' e/ b; ?
其他参数可参考源文件:4 [- _0 @  `9 K5 d: `2 u# `
https://github.com/guillaumekln/ ... isper/transcribe.py
( T+ R$ H) d! O/ w6 ?. a+ J7 [152 def transcribe(4 W/ O$ A! _2 m2 ^
从源文件你可以看到是支持中文的句号断句的。/ ^& g6 p6 f9 x8 ]
$ ~) l5 H! i$ |7 A% s; ~/ G
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
( m, l, a4 S2 b9 E9 d- l" K( D5 I& M7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。* m# [3 L2 ^% \
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。2 n6 ^( R4 G' h/ r$ U( _9 j

4 w  \' K  L) a" v ; n/ O6 E4 g$ t
! E- A' P7 U# k3 i" ]. ~- n

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-5-18 10:51 , Processed in 0.055421 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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