设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
0 u+ y2 {2 x; d+ v6 `* ?; C2 @0 O) c; J( Y$ Q; ~5 E2 X4 ~1 U3 l0 Q
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。0 }) R3 @. I' _; J+ I  ^
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
5 f' X, m) |+ Z3 r3 X2 e0 w8 P----------------------------------------1 I  i/ T$ M' W5 t. T" P
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。2 Y! y! f+ J4 @9 N% z. |( m
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
1 ^0 j6 `7 U* ]# ]8 O0 ~----------------------------------------3 o! l' _  L( ]2 Z
https://github.com/guillaumekln/faster-whisper3 N. c& [" m7 G- M: T/ x
安装如下:1 |0 t" l# f$ L% v$ Z2 K7 u( R
1, Windows 10
- q5 o$ m* f3 ^: n% K+ n, U3 j2, Python 3.10.11
3 n! z" v9 T+ j; E& m3, CUDA 12.1( X7 B5 N# J0 q9 ^$ X
4, 在python 3 中安装
5 y& Z' ]7 W( E; p, ]5 A7 u& `pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1177 ]4 x  x4 V' g' n3 I( C
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
# M1 \0 _8 y9 a2 _& v3 l# o: f5,pip install -U openai-whisper
4 K& @& k' f( z) l( J这是向whisper 致敬,可以不装
2 D- g7 P( ?8 z% d6 _' L2 r6,pip install faster-whisper2 E. {4 I  I$ o, p) J
----------------------------------------0 ?7 @+ r+ X& H/ g
whisper 我用的命令行,faster-whisper 我用的是python。4 b/ ^' \8 q' o2 _: S4 ~
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
. `% ]$ [# b: v, Y! z3 Y" g) ^9 v9 G7 c, ~) V, W. V  [" f7 R5 K
----------------------------------------* e; ~3 Q: ?8 U! p9 O
- y) }2 ?# ~9 ~1 b8 s
from faster_whisper import WhisperModel: k- A. y6 }. h' s
. @: s8 O. a  P# O
model_size = "small"
. v7 m; z1 V# b, F+ B4 v) E6 s/ O/ w1 Y$ i$ P
model = WhisperModel(model_size, device="cuda", compute_type="int8")/ F, z0 N$ V# e" _+ c" o9 c

( F; N+ R2 ?/ H2 E& Z" ^segments, info = model.transcribe(1 q1 u  `* q3 o1 m  v$ J
    sourceFileName, ; W* ~$ R5 A. f- d3 z
    beam_size=5,
* e6 q0 q) S/ d+ t, M8 D    language="en", ) ^7 ]2 A4 ]% x6 c
    task="transcribe",
4 Y+ ^, r3 C# o! T, E7 Z' F    word_timestamps=True,
+ L" _; I) u0 P( ^  W. ^    initial_prompt = "Hello, welcome to my lecture.")
3 [: K0 a# l' j' [& {2 b5 h1 o# _5 C1 V( H
for segment in segments:8 k9 @9 I; J8 t! |( H8 @
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)). P0 S! I. N" i$ l& l% k
5 ]8 L0 S! l3 p% |
        for word in segment.words:: {3 ]- ~. D* A, L" `
                4 d; ~1 Y4 F* b: r
----------------------------------------
0 x8 X+ H. y8 w4 b
9 |' L& j5 h8 h代码说明:9 F6 c" {& f' V! S
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。! S+ M8 n6 V% t( a! Q
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。5 ?9 Z# g; L) F% F4 t
2,segment 本身是很粗糙的,做字幕勉强能用。
: [) D1 e5 K* p- t" w. C6 K3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
: E( [; B7 g- h* `' o- g  m+ d6 |4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
& w0 w3 |2 P2 d% K7 t, T/ {* P比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
: B, S: l, C6 ^( H5,model.transcribe 中参数说明:
3 `8 C0 R9 @3 [8 a1 F1 P你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数3 H' P5 o% }/ E5 f
其中
0 K& A7 {% }% w- P    word_timestamps=True, ! |4 s7 u1 a  t. |6 }7 }5 @
保证了你能拿到 word,否则是拿不到的
$ |7 ?" A2 U. W& b# a0 A) |    initial_prompt = "Hello, welcome to my lecture.")" M, j7 X* x8 X% O0 a' `% ]' ^
保证能尽可能准确的断句 punctuation,但是不是决定性的。
, C. g) l! n3 X其他参数可参考源文件:8 M- ^9 g& ?& D& x. E  T
https://github.com/guillaumekln/ ... isper/transcribe.py. I) Z! H& t# u
152 def transcribe(
: h+ k6 R1 S- d+ @+ d7 k/ d& P从源文件你可以看到是支持中文的句号断句的。/ r3 E  e; G; x7 q

$ l( R* ]* N# B6 I  Q6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
3 U! C0 ~) K; ^; ?2 ?9 l5 v7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
) y% j% E: i5 E8 X8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
8 z; h2 ^1 w+ q' ]$ I6 @) l; F! y, n; `# S  x4 U/ i4 L+ @) q
+ r7 E+ d) \6 N8 ~' i+ W9 p7 q

/ n/ t" C" y2 d! _2 _4 O* U

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-11-5 03:02 , Processed in 0.030326 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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