设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
- B% J3 @9 P" P$ J9 _
1 w! j2 D! C* f  V" X: [/ y借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
( Q# D. b3 t4 _" ]效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
) \5 Q1 ]3 s9 `----------------------------------------, [8 a; G" h5 u! `* o# ]6 J
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
. R. ^- T) w9 _" T& l, n5 `( E在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。& ~# x1 P6 P8 x& P! _( B( |$ K3 J
----------------------------------------
/ ?9 q; U6 m& r: x6 ~% x: N7 [https://github.com/guillaumekln/faster-whisper
" {$ M) A  x: o* x& Z; o安装如下:
2 N5 I5 S5 I# Y$ t/ f2 D0 U1, Windows 10; _+ W8 X) L, Y% v* R
2, Python 3.10.114 N2 o% u# \( e
3, CUDA 12.1
/ H2 P  x; u9 ?  X; m( _4, 在python 3 中安装
7 ~1 C1 Q3 j, l/ S/ {% C$ w' o! ^pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
; n* P4 r2 k  P这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。# o  n6 k& Z6 K% e7 s3 C/ |$ S
5,pip install -U openai-whisper
+ }& _1 Z! ]/ T( h这是向whisper 致敬,可以不装. v: j: f+ H9 W5 f3 A4 y: k8 v. S
6,pip install faster-whisper$ |2 q, I, W  H8 D
----------------------------------------
0 H( z$ x, T' a( m6 L$ Ewhisper 我用的命令行,faster-whisper 我用的是python。0 Q# ~9 A9 g' k8 O) m5 F
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:6 F, y1 [/ L: l- q3 V, J9 D
  Y7 `4 ?4 z6 O5 U
----------------------------------------" K& v3 O1 M; N6 x0 A/ r! w# g
" k) p' z* e0 M. D. a
from faster_whisper import WhisperModel$ v0 R3 J7 T, t# [& ?) U

% n. Z2 f$ M# Y- T3 Amodel_size = "small"
3 t8 j# x8 Y- Q; T
- p+ u1 G) U, N' W% c3 Amodel = WhisperModel(model_size, device="cuda", compute_type="int8")
+ D: h# z. _4 W
/ c& g5 D/ q; n* t4 O9 A$ ksegments, info = model.transcribe(
" w- t5 c' N$ n. ]    sourceFileName, 7 x& U* \; y+ H5 p5 K2 j
    beam_size=5,
9 l" T% Q2 M% E8 y0 \    language="en",
; k/ l. m( C5 e- d    task="transcribe", . Z8 M. ^4 Q$ g
    word_timestamps=True, 3 d: Z, T" ~1 d9 Q' e
    initial_prompt = "Hello, welcome to my lecture."): L0 m5 J4 U0 @  U8 [" F
: g, K! a9 H& a! o/ f+ H  o
for segment in segments:
1 [, H2 E. o, K5 o6 u    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
: G+ x# X" Y) C8 u" ?. C: [& _9 Z& A, x2 |4 T) I9 H
        for word in segment.words:
9 ^& G) R/ I' P9 u                & u! L9 C5 y) w: |8 f
----------------------------------------
% G5 C  A3 Y6 p* I. F# ^% K
9 _: k4 G% P$ O代码说明:$ m* I7 n+ i5 Q3 q" U  N* ?
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
' s/ h$ y  ^& K% H$ G但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。1 E6 b1 `4 T  w; }9 _
2,segment 本身是很粗糙的,做字幕勉强能用。! _* a. Q/ }# K
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。3 o6 g+ [+ h. Y# _! f- F2 `9 R
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
% E0 H8 z. _% j' C, u6 Y3 p比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。; ]1 B+ W. c! c1 a3 D4 O  f
5,model.transcribe 中参数说明:. B) u) h# Q7 O& o) `! t
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数5 U9 X" q2 ]: W/ Q( C6 ]
其中! g0 M4 U! A, b! ^$ L4 u9 H# o; o
    word_timestamps=True, 3 x7 W8 G" ~5 l  [9 i& K- {9 `
保证了你能拿到 word,否则是拿不到的
- p' f$ u& a- I+ @3 L& Y- a( J2 ?    initial_prompt = "Hello, welcome to my lecture."): M" z* i8 Z/ I( _6 R
保证能尽可能准确的断句 punctuation,但是不是决定性的。
9 z) v6 q+ T6 \5 s其他参数可参考源文件:
7 z3 B9 o* Y: m- Q1 N; v! f7 ?) E/ Hhttps://github.com/guillaumekln/ ... isper/transcribe.py; l6 l% ?+ {1 |1 `
152 def transcribe(0 Y- M" Z8 A' v
从源文件你可以看到是支持中文的句号断句的。
/ M) D. J/ H' B. b4 O' ^4 y/ s) {) S9 w" H# L7 s1 p; P
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。0 q, \: y, m3 u; W4 n
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。6 T/ E' y0 A1 @9 n4 {; Y7 o
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。! s/ W2 g0 b$ `3 U# H& ^! p* U

% p  |/ N9 w* f  E7 E4 B! }" q
. \& m7 y7 h+ u$ h" P8 T0 h6 S: x4 O% S! N# v$ S

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-9-9 10:57 , Processed in 0.057436 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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