设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
; c; L1 A3 d, `! X9 E- e0 Z" M" \' \7 M! m
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
  F9 k( c1 P9 P! L% ?效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
: k& O) L0 Q! a( X, a----------------------------------------
4 N" z6 ~2 i" r显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
, G2 \$ K7 z* e+ f在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。' `. T0 ]; D( Q: ^$ M8 B
----------------------------------------
) G. V, c8 \5 `- C" mhttps://github.com/guillaumekln/faster-whisper
! n  `2 A# l/ A8 B! t3 |: i- D安装如下:: [* w) M- i& I. H7 S. k
1, Windows 10
- p4 {! l6 p) L+ t5 W! J2, Python 3.10.11
8 }' y8 B$ q% U- ]1 g3, CUDA 12.1
& A7 m0 J2 k0 }# {4, 在python 3 中安装
6 l2 C+ W, i; p! ypip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
  D1 P/ D! p7 U, J这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。( x' d3 s- Y5 ^9 M! e& T9 M0 c
5,pip install -U openai-whisper
: o( z! R, c3 X7 R这是向whisper 致敬,可以不装
: z, r! q; M; ~& V/ `6,pip install faster-whisper, h6 x4 T( v0 u9 G6 e5 r* K4 Y" l4 H
----------------------------------------
' k! r6 L6 O/ {6 Pwhisper 我用的命令行,faster-whisper 我用的是python。, L: O* E* P5 i% {1 ~! i1 f
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:# k4 a) R/ {  T

5 G1 @+ h" M0 p, i. q6 \: x----------------------------------------/ G* h/ I6 H) e

1 O" A; g8 S, N4 kfrom faster_whisper import WhisperModel
) F6 F6 I* g& S, X6 D2 O
' P7 |, p+ s! L7 O; {% l. Fmodel_size = "small"* U/ d" j( V0 S& n: I! Q2 L9 ~& P

& M- ]) d* Q+ M0 Jmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
1 b, N% P( m% [+ l, D) k4 Z0 u& i: s5 W" V0 K5 ]- i
segments, info = model.transcribe(7 f9 Z3 }! _/ y/ \/ P: F
    sourceFileName, 3 C( }# h! z, D% @8 a4 m
    beam_size=5,
8 H4 n* M$ @9 G: v) I    language="en", " x6 D. r3 d! ]1 F
    task="transcribe",
0 e* O6 Z( \2 i/ H+ t    word_timestamps=True,
! G; V+ b0 [: y8 w    initial_prompt = "Hello, welcome to my lecture.")
: P, j+ j$ q7 Y! @  O% o3 Q' k( @0 q
for segment in segments:
3 Y9 D# c; J( r9 E$ q- R, S    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))8 X7 p, U5 Y+ T

+ Q1 l, N  i8 H        for word in segment.words:
( `3 _% C8 f6 c1 w  _/ O8 q0 L7 y9 U               
* p% T" c4 C+ h7 b; |7 Q----------------------------------------% D6 t: x; C) i2 J- ~% d

* N+ ?: f7 S; M/ `/ L3 @9 U' P: f代码说明:
/ H3 g0 O. n! `2 X" P1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
  m/ U7 e1 Z# ?" f9 m& `但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
  e: ~3 O9 ]( K% R3 B: P$ D2,segment 本身是很粗糙的,做字幕勉强能用。
9 }+ y* E3 a# V" e, ~; A3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。5 a* O5 r# j. Q9 {4 i
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
( u$ o* N# l' |( y比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
% t$ f* [. d2 P5,model.transcribe 中参数说明:
, u9 O# L1 r$ u) ~9 c$ g* B你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数) f0 c' t/ D, q5 h9 q# R1 _" P5 {" [9 t
其中2 ^' F( B; c, j1 m5 t: x
    word_timestamps=True,
" y1 i/ Y+ P' d5 x8 f$ Q/ V保证了你能拿到 word,否则是拿不到的, N6 F) U# z, p/ I4 t& Z! W
    initial_prompt = "Hello, welcome to my lecture.")4 n5 w! D0 e) M
保证能尽可能准确的断句 punctuation,但是不是决定性的。4 E2 H3 Y) L" ^# Y( C
其他参数可参考源文件:$ L. F& I# t7 D  `4 A
https://github.com/guillaumekln/ ... isper/transcribe.py
: O. W) v+ J" v7 \" U! Q9 r152 def transcribe(. J7 x. v% b1 ~' f8 }
从源文件你可以看到是支持中文的句号断句的。
! L7 g* T4 C  R- W' w. Y% ~/ _$ t+ {
" n5 E- s" t5 A2 D) E2 l4 E0 B6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
2 c& F& k: w+ D0 |* m: L) m" G7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。' @; y! `# V. Z  H6 n) M
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。& A) j8 \$ t4 S0 A( K2 Y
$ G4 q0 K* @# N; S, l" Z

) t) o: q2 N8 t  m$ u) n3 w! @  T: [* B0 R% H: p# e+ ?

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-3 08:51 , Processed in 0.055781 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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