设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
! E1 E2 i3 G& v7 f  g9 f% K& M4 U1 a! G0 b( k. V
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。7 p& a; f% _) r: t+ }
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。  t0 l- M8 H5 h7 `$ p7 r$ X2 R
----------------------------------------/ Q6 v1 j& y/ J3 ~% r/ {
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。' I! J% I: |' n$ \; E
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
1 i8 f; i2 w9 c$ s----------------------------------------: S( [5 [( H: \* \
https://github.com/guillaumekln/faster-whisper
8 G+ {5 G! j. I0 {安装如下:
8 x5 ~; j! t/ D5 e. {$ A1, Windows 10
: F6 ^9 u5 n* f+ O2, Python 3.10.110 }" m8 F" T) Q3 `& h6 U. w
3, CUDA 12.1
  E+ i: h- V" c" U, u7 |4, 在python 3 中安装; t8 \' S* K- W/ b3 T" G# R" u
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
  |/ s9 \, W" E7 K' K1 c: w这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
6 N( D$ F3 _0 u. u. }5,pip install -U openai-whisper
1 A1 u% m$ o7 S' R0 Y( g5 y; Z这是向whisper 致敬,可以不装
+ f, A- ]6 P& Q4 r: r6,pip install faster-whisper
1 S9 k8 Z) E# d----------------------------------------( V4 K9 ~% N+ u7 B; b! k( n
whisper 我用的命令行,faster-whisper 我用的是python。5 f1 P( b) D( m6 R, [  L8 p+ r
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:/ Q0 h1 z8 ]" G, E0 J. u2 F
3 U3 C8 d3 E2 I6 c$ i1 R! X
----------------------------------------+ F# F0 k: n4 R6 W

3 _4 C1 `3 O& l' J$ x" e4 xfrom faster_whisper import WhisperModel
% x- ^5 S) @3 j# r
9 N5 C8 ^  I3 P3 |3 n$ K2 U1 Rmodel_size = "small"
. R5 |* _/ w0 `' F; s" q7 _& M- u' v. c, \4 r' a
model = WhisperModel(model_size, device="cuda", compute_type="int8")1 @4 W7 l% Z9 c8 }# o* M$ n

4 c6 U8 [1 x) F! H, @segments, info = model.transcribe(
2 ]+ ^* n2 T: J* X* |    sourceFileName, 7 B( i. Y* b, j
    beam_size=5,
% R$ F# Y( ^4 `! z- V) G! |9 S0 e    language="en",
) C- n9 V$ O: [; x. E& s- T, s+ k7 n    task="transcribe",
. y# B: H& {  U6 Q    word_timestamps=True,
+ l2 F" x/ y' e( S$ I; p+ O: ^$ V7 l    initial_prompt = "Hello, welcome to my lecture.")
+ s% o5 ?: \  q% P0 [3 G/ K; f( f. q" T8 A; [$ ^5 |( W
for segment in segments:! P0 Z2 u. F/ U) U6 w
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
  G8 @( U# N1 G+ H! ?1 r' w2 `: v! N9 R$ ~  U( x0 M
        for word in segment.words:
" z' T+ I/ e$ Q. o                % b' f* i# ]# y+ i" C# H. S
----------------------------------------
6 K" N: L6 @2 U$ E3 o% @% b) e9 q1 i+ `% _6 i3 H6 C
代码说明:; L' `' V% H. L' S) y3 L& g' e6 H& `
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
) k& ~* G$ s5 c: J: b. ?* L! D但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。" a( F% s  U' r- }& f, V
2,segment 本身是很粗糙的,做字幕勉强能用。
( S* Z1 L( j- j3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
# |  p1 X- X0 S6 H0 G4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中4 T; v/ V% x, |& G) R$ d" U
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。& o: l) k. J" y
5,model.transcribe 中参数说明:
, ?8 }% b: b% e& E* i; E你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数2 @+ f# Z: v$ i, ]7 l. l3 C
其中. `8 m0 L$ g- f! h0 u- {) z7 J
    word_timestamps=True,
" q% x) o- ^0 g: f: R9 ^) M/ f保证了你能拿到 word,否则是拿不到的0 y/ p/ j3 I  [/ y" J
    initial_prompt = "Hello, welcome to my lecture.")0 Q8 f4 Y# r- W( }* v4 h
保证能尽可能准确的断句 punctuation,但是不是决定性的。
+ ]6 d& w9 B/ ]- }. ^其他参数可参考源文件:- b( C  B  V% |! B3 v- B5 J/ ]" {
https://github.com/guillaumekln/ ... isper/transcribe.py
5 _7 m9 d3 W$ b; u152 def transcribe(1 F) i7 R7 c8 D7 I; g
从源文件你可以看到是支持中文的句号断句的。
* t3 T% `- m+ V: s0 r3 E& C6 A# t1 W* }. Y
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
# Z6 x4 c( b* a: K# ]- E# ]" `7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
: v9 m- @" G7 W; P! C8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。1 \2 o; ?/ h5 `* B) R

' {: B9 d& g4 @ : _- U! m  o) T- Q) P. E* I. o2 v. b
2 a  t+ q; e5 z4 t/ p# I8 D. }

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-2-23 12:19 , Processed in 0.038925 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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