设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
" m) |7 j% D6 @& B5 J9 n  I3 n: J7 {
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。8 |8 Y& P! b( {& D( x5 G
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
0 ^- e9 B; @4 F9 ]5 w! e* ~----------------------------------------. h, P) k4 s" k
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
3 n0 s0 i. L; m& ]/ y9 u在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。1 Q! [, ^% y" T5 U0 X/ c- S: t2 B0 B& b
----------------------------------------6 s8 O1 m# ?6 E9 A$ n; T/ T# P
https://github.com/guillaumekln/faster-whisper
" {9 b: z% F0 }, D2 i! J# ~安装如下:
6 t+ n4 z- I" }/ y1, Windows 10
1 S0 K3 A  q. _" p9 w; \2, Python 3.10.11
- N0 t$ e" D6 W6 Z3, CUDA 12.1; \& M5 f. q( f! Q9 |8 d) I3 \
4, 在python 3 中安装3 W2 b# w$ E7 A
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
; \% g/ l! Y, m( U. ~5 ~这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。2 k$ I  h4 }" p: |! B. p
5,pip install -U openai-whisper1 W8 `7 p% g9 T6 i/ y
这是向whisper 致敬,可以不装
/ o7 w& @3 ?+ E" i3 b& X- f4 U6,pip install faster-whisper& {0 n: Z' [( H2 x  j6 V
----------------------------------------! l# t7 M) s. X8 a4 d- q# B3 i3 l
whisper 我用的命令行,faster-whisper 我用的是python。. H# d9 Q" [4 o9 f
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
$ c! N, z# u% @8 y3 o; i+ m1 z
& H7 M4 u$ A+ ?* V( ]----------------------------------------
/ D4 h$ N! ?' j! F
7 r8 z. n3 Q" a! pfrom faster_whisper import WhisperModel- [+ Z0 b$ n% E; N

( D) B. E( B3 p) I4 r8 C9 F" lmodel_size = "small"
" R# w$ i; ?* D, ]$ z- k/ O& E4 b. _8 Y. N8 K
model = WhisperModel(model_size, device="cuda", compute_type="int8")
6 F5 Y1 D% P1 P9 L/ s2 g, U: n5 T9 o7 v) @
segments, info = model.transcribe($ H. ~9 z9 b" W' m; Y
    sourceFileName,
" x5 o. D2 ?$ U4 u) ~4 l    beam_size=5, 8 k8 |* y$ y# E  t1 M
    language="en",
& g6 m1 K: |* E. Z$ j3 e    task="transcribe", " k" {4 v2 D1 T# m: _
    word_timestamps=True,
7 C: m& J. C: L. `    initial_prompt = "Hello, welcome to my lecture.")
& t* v. r+ S- S# d  u$ b3 }0 L: H" r5 [3 Y& x) i% q
for segment in segments:( h- \  w$ r& x9 o, @
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))3 t7 F' k- l# _( Q8 ?
5 Q+ {7 V" j& d$ ?/ O
        for word in segment.words:- y/ l3 t- D7 b) I6 w" x- {$ @7 z' D( D
               
9 p( M( E' X% o  `8 A- E3 l  T( n----------------------------------------
& n9 ?, n( k5 @' |
* {: `# m: s; r代码说明:$ Q' m4 c; S4 H0 W) |
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
) p/ p" V1 Z- V5 k7 U2 N但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
  p4 {8 E3 L. Y% |% M2,segment 本身是很粗糙的,做字幕勉强能用。( x. ?* @* q4 V
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。; G$ ~2 ]+ s1 e) N0 H/ i
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中  |) d" _* j8 c# `
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
! M6 E0 x8 p3 v6 I: x5,model.transcribe 中参数说明:
/ U/ H- Q! I: J0 K7 m你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数+ Z3 U5 [; r. w8 `- D
其中
& w0 Y9 d' r' \1 d) {7 i" K2 B    word_timestamps=True,
+ v1 s, J( ?3 z5 b  Q保证了你能拿到 word,否则是拿不到的
! P% I4 ]1 V7 P    initial_prompt = "Hello, welcome to my lecture.")
' [4 e4 N3 b( n! F0 q保证能尽可能准确的断句 punctuation,但是不是决定性的。7 @2 \3 _( Y. f( G1 z
其他参数可参考源文件:
( J+ t; t0 X1 ?( l" t4 o& thttps://github.com/guillaumekln/ ... isper/transcribe.py2 x+ D+ D8 i- l$ x
152 def transcribe(
( n: m3 u9 I, W. D7 K, N$ j从源文件你可以看到是支持中文的句号断句的。+ U4 G' G# v6 L5 d

  g  Z4 ]- ^3 ?) ?7 p6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。# B9 l* y( f4 t# e6 k4 o
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
8 y* P. p5 W; e% ^8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
, r$ Q/ q# }; z( F' w( G7 f; o6 c; Z
/ z) a. L' K7 _% @2 i ; i. C' p6 S( w

; x7 L9 b4 S" `  Q' H& o8 b3 t4 ?- t

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-16 21:50 , Processed in 0.028045 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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