设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
  ?; D+ E3 n# i9 y" Z6 y: j3 j
- G' J6 _6 }" d+ `1 _借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。( l: e: J5 P1 }  L
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
: k: F, z* t9 s1 M1 x----------------------------------------2 ^( F* ]6 @8 y- G
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。1 E( W' M3 F( F) ?) B7 M3 Z& W, w0 W
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
8 d9 x8 U  \" E- l----------------------------------------) b* S) h) {* J- c9 n: L, }- x
https://github.com/guillaumekln/faster-whisper1 w5 l8 W& @% U5 b. x8 ]( {
安装如下:( _/ [: A. D' i3 q6 Q, Z, c& F) D* A4 A
1, Windows 10
; j+ D% B1 h; W1 D; K! G2, Python 3.10.11
' P6 x) S* c; l2 x9 m, H2 h3, CUDA 12.1: [7 S& L  c2 _5 S/ `
4, 在python 3 中安装
6 w& w4 X. y* H6 X! Epip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1175 M; G  w# a) o6 V2 s6 ]+ q3 ^
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
% {* P5 D5 l: i0 F: c- s5,pip install -U openai-whisper
6 z( b, @4 m8 n这是向whisper 致敬,可以不装' v' h* M; ~) g2 @. M2 l5 N3 P
6,pip install faster-whisper% o, y2 M) {$ L7 V6 X2 }
----------------------------------------: t7 X7 K! C" U
whisper 我用的命令行,faster-whisper 我用的是python。
+ I3 @8 m$ s) H4 ~下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
6 l' W9 Y3 ^& M) M( ~
* z& l7 L# ~4 g3 h+ |----------------------------------------2 m+ n8 n/ t; z) F) {

4 I3 {% {- K  n8 cfrom faster_whisper import WhisperModel8 {7 |% `  ]+ G
5 c, z* T2 T; q4 g, T  k' X4 Y
model_size = "small"
+ E  \' {/ p# @3 p; M7 y! B$ \
* ]5 J  [  g9 a' t- ~& a% mmodel = WhisperModel(model_size, device="cuda", compute_type="int8")4 f# a! f+ r1 \! W

" k' A; _% }1 k% isegments, info = model.transcribe(8 f0 D& b: |, }. O" @
    sourceFileName,
$ P0 }4 G% D) D* L    beam_size=5,
. [8 f! r! k# i4 k3 H! |    language="en", ( p! t( r2 [: m  t0 p3 A( v) _# k
    task="transcribe", # A$ p7 ?* ~0 `; d% P0 Y
    word_timestamps=True, ' J( E: I9 c6 ^& I; b
    initial_prompt = "Hello, welcome to my lecture.")
( I4 G! \+ A. s1 W. v/ d7 x3 h/ ~" \6 l
for segment in segments:/ J% n& n5 j! `: R5 l
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))% X9 V6 z1 }  W  i# i

( {2 w0 `5 e1 @* T' _& ?        for word in segment.words:
" Q. a" \* B0 o6 w. l3 W                * A2 R; k& S' s+ ?/ r) x- z
----------------------------------------
2 Z3 Q: B, E5 ?2 t/ |  P  m' U7 G' J  a# A) P$ g
代码说明:# o- x+ g9 ~/ `* [; ^, L. p. }
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。) j8 J( s+ n( x( n6 u2 e
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。: C. [& Z) q. ]+ W; c
2,segment 本身是很粗糙的,做字幕勉强能用。
7 H' h, y6 r, j! v: @3 E6 c3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
. J! V$ d5 K$ e: F. N6 ]4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
6 G% \2 L. e5 K- Z1 i1 K+ C比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。/ v; t8 K/ X  b& j) O
5,model.transcribe 中参数说明:
7 x" a$ b3 l- F/ \+ i7 N你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
$ Q& U0 J1 U' |其中
5 W8 C: z- `7 Y9 c! y3 F; S    word_timestamps=True, 3 o% K, g' [/ I; I
保证了你能拿到 word,否则是拿不到的- V" b. Y1 _, n
    initial_prompt = "Hello, welcome to my lecture.")
$ d0 j! P, ?2 D: h; L+ p保证能尽可能准确的断句 punctuation,但是不是决定性的。5 j# D/ [, {7 @6 N
其他参数可参考源文件:6 I$ N% ?& r' C2 l0 s
https://github.com/guillaumekln/ ... isper/transcribe.py, H! I4 M) n5 R& @% a
152 def transcribe(  O" P$ P: k- s, G. L! s
从源文件你可以看到是支持中文的句号断句的。
9 r2 u/ }1 }& U' d& `6 P" [4 q) C4 A/ L
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。8 ]3 i! \) i2 c# \
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。- E/ d3 X4 v- z- g  N
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
' |$ I# D0 O/ W; h( o5 X+ Z( X* X
5 v4 K: @+ [, y6 x, V$ t
  f- g0 r/ T. e0 y" T% K
0 [! |, ?% S) `

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-7-22 02:03 , Processed in 0.070640 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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