设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
! c7 n3 }  [1 W- G8 O
! G' H+ |$ T: _- W7 \; G# c借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
: @' ^& N8 z# R+ y- h效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。+ C! m1 m! X% ?. U
----------------------------------------) _' P9 p3 d0 l' `' ?3 l# J
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。! m: K+ M2 t9 H/ `
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。/ O- G% x* B: K! L# ]
----------------------------------------
1 C2 j1 O  {+ N7 g$ ~' T1 S' Dhttps://github.com/guillaumekln/faster-whisper) l& M8 E8 x: |, o2 C
安装如下:
7 b0 o7 k3 y. l  t2 p& u  L/ |1, Windows 10
- M; o& Z2 y- g7 G7 I2, Python 3.10.11- D+ d/ n& V) _# ?+ c1 ]
3, CUDA 12.1
5 x9 Q& c0 g5 a% x# N4, 在python 3 中安装
% l5 O, X* C" G, W: \" Npip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
& M& }  ^, h9 T  c这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。* ~3 w  H  D: `" A$ L( d
5,pip install -U openai-whisper
, Z0 v; `* i* k& S这是向whisper 致敬,可以不装1 e& ]. A) x9 J$ \; B: ~
6,pip install faster-whisper$ o5 b' s" v: W0 X5 t. a: q) t
----------------------------------------0 x' J( v+ Q/ L( ^9 |# J
whisper 我用的命令行,faster-whisper 我用的是python。) g4 s1 I4 L9 D6 l
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:& R2 p- I3 x# n2 b

: E6 h" j' W( s  g+ f# A+ q0 O% e7 _----------------------------------------
- \" k6 E. s. J! u
* ^) V7 [7 p1 f: O9 cfrom faster_whisper import WhisperModel
* z  H+ b5 W- n: l8 Y; |! z3 r* n4 v$ u7 ~
model_size = "small": a2 S+ N( U- c, e
! q8 Q- F: V5 Y- M& q
model = WhisperModel(model_size, device="cuda", compute_type="int8")  l* W, F/ d7 Q
* {) h8 Q/ u# i) W' j- S* M$ N
segments, info = model.transcribe(
: y  R& |3 e: y- ]- B    sourceFileName, $ ]+ H1 j8 `! d& U1 s5 z3 A6 i8 g
    beam_size=5,
6 K" s4 B: U. Q' L7 |- z& [: I    language="en", / v- X- M3 U) a- w
    task="transcribe", 2 p) S, @3 f3 R& k! t3 p( z
    word_timestamps=True,
5 `# G- N9 j  @2 a, p6 M    initial_prompt = "Hello, welcome to my lecture.")
0 G3 m2 d' J  S+ j# d
2 m, o: V5 W7 H/ W5 e9 v9 ofor segment in segments:+ q9 G  I5 w# Q" G9 W
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))$ V7 k# v, W0 M) X9 m7 B
" N5 X" L- ~, W9 i0 R: J# @
        for word in segment.words:
5 j, H, j. _: e3 g+ Y  B               
8 k8 y. ^8 W! a, W( Y----------------------------------------2 m  h$ D/ ~3 ^$ @( c  n

& Q0 X1 U! i" k" V代码说明:
- U" j0 v, |1 L1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。5 k* \4 e9 N3 S8 J  x) y3 C
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。- T; ]' @  U3 `5 S( ?9 m
2,segment 本身是很粗糙的,做字幕勉强能用。# O1 P' X5 V0 u! i" ]- r5 j  j
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。5 `8 s8 O+ [3 I8 p. G
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
4 E2 ?! j/ i" r2 K. \( X比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
3 D! k8 d$ p1 A7 }5,model.transcribe 中参数说明:2 ?' F# g0 b! D# g/ |9 A
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数9 J9 q1 b+ [& {7 s
其中: F+ [  k+ f& q
    word_timestamps=True, 2 q. I/ Y5 ^$ N. D% a# J
保证了你能拿到 word,否则是拿不到的
* l8 }2 F- d1 W- A    initial_prompt = "Hello, welcome to my lecture.")
1 U  l1 `, ~" R8 v8 ^: a保证能尽可能准确的断句 punctuation,但是不是决定性的。
( y/ o  b9 H* j4 @  H+ ^其他参数可参考源文件:
3 u4 s) K" }: k3 M) hhttps://github.com/guillaumekln/ ... isper/transcribe.py
  {3 w7 n8 z" `/ p& r' J152 def transcribe(
) v! D6 H, o; _从源文件你可以看到是支持中文的句号断句的。
+ i- z9 A, t' N# i+ d/ i
9 ~! R1 F8 Z7 u6 [, G* Q# C: O. ^6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。" b6 N3 [' f  @+ n+ R6 Z9 b
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。) {4 b2 y, p" k3 g) N9 i5 I: `+ P3 _
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
- \) l7 V( m4 D4 X' g
8 I' ?4 u8 M( W6 U5 R9 p# l
+ @2 }. H( {% U6 p8 H
; V2 V) K2 x+ c( r, S5 N8 l

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2024-9-28 07:02 , Processed in 0.032805 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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