设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
* n0 a9 h. L9 n% f+ R, P+ f9 e/ U" j' R2 W# T
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。' m: C; \! F/ X
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。' A* ~3 O, A0 c
----------------------------------------
- A' x' U9 J1 U. [6 |9 h3 u& j# j2 R5 c显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。% o: s3 l4 C. q0 d" V
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
0 e2 o$ Q- P* p) ^----------------------------------------4 u! h) W: c8 G( `- L
https://github.com/guillaumekln/faster-whisper
7 q' U# S8 K7 X: {安装如下:7 z2 W& k( Y! D- I1 A' ?
1, Windows 10
9 d6 n/ G9 w2 Q* @; o: v% @2, Python 3.10.114 @1 m* x6 D1 t: {$ C/ Q
3, CUDA 12.1# Y( K  {& U$ `% u
4, 在python 3 中安装
' q3 m+ C" i# j! W- E! e2 K4 M: k$ _$ }pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
4 t; V/ ^* O8 O- |7 P这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
: l$ E1 F4 `3 J5 L0 ^2 _; [5,pip install -U openai-whisper6 @% a2 d# S! ], P8 k
这是向whisper 致敬,可以不装5 |) b4 \2 e, M
6,pip install faster-whisper
/ b% r6 Y1 e) ?* Z* M- u( T----------------------------------------
4 j: ?3 [1 @6 R  c/ Hwhisper 我用的命令行,faster-whisper 我用的是python。$ [5 k+ B3 E, {0 m4 [7 b/ N
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
6 i" W* U/ A' O1 F% Q5 ?( X4 V3 O9 s) {" L
----------------------------------------
5 j0 g: H7 f  b- C
4 b9 p( C# O0 W) K# H; N1 mfrom faster_whisper import WhisperModel
+ C( U' U! g! G/ B8 F# P1 h
# q# s0 J1 a  N1 u* o8 {model_size = "small"
& s+ l  {2 o6 s# H' }  ?! C
% J9 f4 n& H, F8 z; Bmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
% N+ \+ Q8 X: V) G5 ]0 q$ R' q) ^6 [. ^, ~4 k8 D( d- p
segments, info = model.transcribe(
9 O4 S/ v5 {% n    sourceFileName, ' \& `: y$ I# `6 U1 i& q
    beam_size=5,
' |& r1 h$ Z0 V! |/ T    language="en",
) Y7 p% [* T3 x4 P1 T, o    task="transcribe", 7 }0 u2 O# e% t6 [1 H
    word_timestamps=True,   u9 `' s% D' d1 R0 O$ ?5 h
    initial_prompt = "Hello, welcome to my lecture.")
1 e/ x0 p6 @; N* m6 z& E/ G# _: o# d' b6 @2 F( d- K% v: w! t
for segment in segments:' D* ^0 v# t' t3 {# T' P1 }
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
6 V% k0 c2 O$ X0 n) \+ b! m) ^+ z0 M3 J
        for word in segment.words:
6 s! B4 I: X5 m+ a" [               
9 A: J3 N, }; g+ n" `# F$ L7 @, v----------------------------------------
+ s$ v: y% c2 {6 s) S
! o+ j9 r4 q( C" y' Q代码说明:9 p. g% {9 M9 [; [# L" s
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
: o2 y6 O* ^1 z9 a, N6 a2 H7 s但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
4 G9 ]: n1 D/ J$ S) a8 |# q6 B2,segment 本身是很粗糙的,做字幕勉强能用。
# V$ g3 i/ F& l3 G% @* R/ N" U3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
& X# a5 w' I6 y; I8 B4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
% D! R  m6 [, ~/ c2 j0 R3 h比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
4 x- F: w/ ^7 v" A! ^5,model.transcribe 中参数说明:6 f: n0 |4 w* t! u
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数8 J1 {: {& X" c: E
其中
0 q6 T9 D3 I. N/ l    word_timestamps=True,
. Q+ U7 y' m; v3 G6 a保证了你能拿到 word,否则是拿不到的
8 L: T* m" }2 U" m6 p) Y    initial_prompt = "Hello, welcome to my lecture.")
) _& n& ?. N5 [% O  v! `% K保证能尽可能准确的断句 punctuation,但是不是决定性的。
! A& W/ b9 ^: r! E其他参数可参考源文件:
% @. _2 I6 s4 D* B: t9 E# f5 n2 whttps://github.com/guillaumekln/ ... isper/transcribe.py
$ D6 V( N" V& H. c152 def transcribe(  @* O$ J8 l2 H7 t: T. _% n
从源文件你可以看到是支持中文的句号断句的。0 x+ n: F- a: t5 ]

* v1 _2 E# B+ [4 |: o8 W6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。+ }9 u/ G" d3 p$ y- j& ^+ |; d9 U$ E
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。( b3 k( C- k3 p6 w
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。% `+ s, B  s1 _  e* c; Y0 |  r
. i$ u9 c1 g; o/ r
; `! D: B: [' M7 y
- }- l4 \  U1 h1 x7 ~

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-11-17 10:36 , Processed in 0.028787 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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