设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
7 X1 {* r  e# n% [. b4 v; O& f: j' c" z/ B" `4 X# |
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
& K8 X6 l" y/ }  j) y; ~& W效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
4 U) J1 ~$ Q2 t# `  x3 k# k9 y----------------------------------------
) ~7 c' y$ Z: O7 P1 L& T显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。& O2 o; z3 o9 R% t# s! z
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
( S* Q( d+ X5 d( z$ i4 C----------------------------------------! H# h* s, t6 P! _8 _1 Y
https://github.com/guillaumekln/faster-whisper! _+ ]" H7 a" ?# Z# S6 Z) r
安装如下:3 E3 I2 b) a) w  s  }# R2 c
1, Windows 10& \" `% [$ r% @( h5 Q. |
2, Python 3.10.11
, c* l4 B! U% b3, CUDA 12.1
+ A0 Z8 [2 Z8 k- m* {. x7 Z4, 在python 3 中安装
! B# v8 k- u8 G4 Wpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
& m$ N1 V7 f8 B2 |# ]这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
% U. b2 u( k2 D% ^* l3 C2 z5,pip install -U openai-whisper
' k4 a! P9 A7 w这是向whisper 致敬,可以不装4 C. K3 G: `0 ^( z' I3 o$ S
6,pip install faster-whisper
7 m' S/ |+ w1 t! M  Z----------------------------------------0 y1 }, a" @, [6 ?! g
whisper 我用的命令行,faster-whisper 我用的是python。+ T* _# h2 C+ S+ _. M. _; |% F' _% A
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
' l' n( H. ^8 U) M: {# t% S# p+ \8 h/ {: h; `1 m9 i! T+ C; z
----------------------------------------7 Z) U9 y! Y8 ^/ Q3 ?

: ?1 y5 o. \, gfrom faster_whisper import WhisperModel
3 J6 h+ h$ H" N9 W# L+ k8 @& `5 M8 y' x
model_size = "small"2 o3 d! P- U  ]- k$ M

, E9 D( P# d8 I, _model = WhisperModel(model_size, device="cuda", compute_type="int8")
" {+ x  ]% _% e2 z2 ~9 @0 M$ n8 W5 `3 L
segments, info = model.transcribe(1 {4 O. {* X9 l" ~+ e; J3 |
    sourceFileName, ; c) n: U; {* y- S( O- N* u
    beam_size=5,
: P- E( s; l1 S    language="en",
# V$ w3 ]& K: q* _1 `2 d$ L    task="transcribe", + D; y1 e4 {# W& ?% e' Z
    word_timestamps=True,
6 I$ ?3 h7 s' i# A" x    initial_prompt = "Hello, welcome to my lecture.")$ q% f- q/ D, @; X  f0 y

4 Y- C" I! v- j5 _+ r- Hfor segment in segments:/ V% n" k2 [$ ^* x  k
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))7 v* f7 F$ \* S4 `6 n9 p, d
+ d; ~' n" L8 b' X% n+ B
        for word in segment.words:
0 U; D, \1 Z; ?6 {2 m                $ f$ \. c* k3 }1 p
----------------------------------------
' X! y  c' p4 B- T# P8 o
, H: C1 I- ]5 i4 C0 r8 p代码说明:& y0 o/ V# n0 F7 d! S
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。8 a" q# M6 x- V3 I* X
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。1 |, O  m3 t- T  J& V2 R  t' X% r
2,segment 本身是很粗糙的,做字幕勉强能用。
  S5 j7 S) j  I% ]  ^7 Q% \$ C3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。1 b0 M/ y( ~, a# f* t
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
' ]" y! @# m8 H  p$ M' C- ^比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。8 _7 B* O5 ?, C4 U0 ^6 w5 C
5,model.transcribe 中参数说明:; P6 J* t  L4 N6 j: l
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数  w- ^+ U0 O& j; a3 b
其中
2 p' ^) M' S) \7 J" B    word_timestamps=True,
7 u' A; G9 b7 e! V3 @& M保证了你能拿到 word,否则是拿不到的7 s* C9 u0 _0 j
    initial_prompt = "Hello, welcome to my lecture.")
" m9 N) |& y/ G/ @3 q5 }; K保证能尽可能准确的断句 punctuation,但是不是决定性的。
* \3 g: k+ T$ _* _& s( j  x1 H其他参数可参考源文件:
$ R; h' d3 J  K4 h" S) v# N$ Lhttps://github.com/guillaumekln/ ... isper/transcribe.py7 {# O. y; G8 m' l. Q4 \+ A
152 def transcribe(
& S' d* T# J/ c) @- O# q1 o# y! n从源文件你可以看到是支持中文的句号断句的。0 G4 Q# M& e9 u
% N' L- \. B1 A/ ]. @% P/ J6 X" P
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。% i& U: V. V. b
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。# V+ b% }- O, f5 o
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。/ D: w5 e4 ^+ x/ I1 D

' J) s6 m% o3 E- s, `" i7 U  G3 w
" p2 X* }$ `. i7 y2 p" q0 U3 v
/ @5 B! b3 R, D1 r5 z! Y

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-7-5 18:32 , Processed in 0.056018 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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