设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
' h+ F4 ?3 }7 A. R' m5 N5 Y# C/ u+ Z. |/ j7 S
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
, z7 b0 V# o8 f( ~" i/ y- C' f效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
7 |/ ^& h+ \9 o% l- `' F8 K% D$ X----------------------------------------9 ~6 ?9 Z( \4 v! |: o/ t
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
7 k' z4 x* \- V) B在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。/ X: g9 x* F  d3 ~; M- p5 A
----------------------------------------
) _8 B$ D5 |% u( Uhttps://github.com/guillaumekln/faster-whisper' c, Q8 G$ o$ I! S9 @4 f
安装如下:
0 P3 F8 I! y3 D0 p# _3 X/ g( A6 Z1, Windows 101 K4 o9 |$ \1 w6 f+ @* X
2, Python 3.10.11
% m8 z) e* l9 H3, CUDA 12.1
' M' w7 s* r) ~9 }! ?4, 在python 3 中安装
' @  I0 [. p- Qpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
1 h1 f" n3 P7 S% V1 b2 ~这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
& g0 r. b1 x- U; \% P" ^, ~5,pip install -U openai-whisper' x) o2 a8 X5 v# ~
这是向whisper 致敬,可以不装' R$ h, g9 A+ Q3 ?; L3 I+ m
6,pip install faster-whisper4 x# c7 U5 l# Y
----------------------------------------
, }- t3 R: G% f6 S4 m9 D& {whisper 我用的命令行,faster-whisper 我用的是python。
: H; A. q- R+ w, f( b下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:/ W* R* B6 f% |8 M- ~9 x0 c
, E0 _5 J$ E7 u8 _) U0 l& u
----------------------------------------
! ]) @  ~. G% ~+ L
1 F$ `  n  z# g  m* F  i) afrom faster_whisper import WhisperModel
; \1 {3 I9 L  }4 I0 `
, w1 E* U: |* X  u( O% {* Fmodel_size = "small"$ x, j/ o& U7 |0 Z- y4 V9 U
. \  u9 @  d& [! }3 H
model = WhisperModel(model_size, device="cuda", compute_type="int8")& e* d( L& o  W' R/ O, d$ R" o" t$ s

2 Z8 s" K$ j2 G6 t! Ysegments, info = model.transcribe(
4 N5 s. s  a' T) _$ T    sourceFileName,
& X9 G9 ~" j: k  b: K  d9 b    beam_size=5, # J& A  [1 f4 d- `5 t) V/ A& M
    language="en",
8 a  l. W' Y9 F    task="transcribe", 9 W+ J" o0 [1 E/ O7 R$ R
    word_timestamps=True, % o3 b$ @7 h7 I3 V* }
    initial_prompt = "Hello, welcome to my lecture.")8 P7 h+ D" Z% Z- H- O8 n

; {5 z  w0 R% u8 e% B5 A( mfor segment in segments:0 O+ e' U  g/ q
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
  B' ]9 a8 A# i
0 Y/ m5 ^1 q2 X! E* {        for word in segment.words:1 l9 q+ v3 o# `% t4 @. E7 X
               
% A2 j1 @) `: }. q( ^" L8 Y, v----------------------------------------( @. h9 |# \9 I. X

- h0 U, R3 b  G8 h* |. u代码说明:7 p# M# ~( M" P1 _. X' f( ]
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
4 k8 q- \" c1 z1 S8 P; M* [但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。5 A: u6 K3 T  o" h, z& n+ M
2,segment 本身是很粗糙的,做字幕勉强能用。6 e  D' Y9 W7 k7 J! F: D6 w6 l
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。" U) c% E8 \6 i3 f" o
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
7 T% n4 ?! L' G" I比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。" ]! e5 z3 K6 j, Y9 ?& `; Z" i
5,model.transcribe 中参数说明:+ d$ X1 G2 [- c3 n
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
& K; n0 b3 d/ h" c其中
; k+ D, B; v4 _5 d3 j    word_timestamps=True, # C1 P# W6 p& N" W
保证了你能拿到 word,否则是拿不到的- O) N1 t  R% W5 b. @; g* o* Y3 F# g; `
    initial_prompt = "Hello, welcome to my lecture.")  a2 x0 J$ B, v
保证能尽可能准确的断句 punctuation,但是不是决定性的。
: `! I6 u% Y; i7 h其他参数可参考源文件:9 D2 S' L2 d( R% B
https://github.com/guillaumekln/ ... isper/transcribe.py' U  d3 W1 c0 h- f. f2 E
152 def transcribe(, V" g7 @4 _2 B" R, |% w6 h$ K
从源文件你可以看到是支持中文的句号断句的。
' |% W% ^  _8 Z! M$ q
- G1 _: u. K+ j8 H" @) z  [6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
; s2 c  D$ Y" O/ n( W7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
: }# U# z8 O( ^: K8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
) |$ I5 [# y* H) `5 e
6 H  ^/ H9 T) W- Q- a7 K! ?
, L# L( I# x: H
+ p% h5 C( F7 Z( k! X

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-15 08:50 , Processed in 0.055409 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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