设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
5 i; V4 n' d5 ^+ \- y! a* w+ v6 E! I
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
+ x! c1 z, a- A, z+ ?效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
9 p5 o8 F+ r; f----------------------------------------
* n6 W3 p6 s1 z) n/ _显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。" r* \$ ~% d1 F8 e! D* Z
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。. Y+ I" R+ d8 ]: A4 h
----------------------------------------
; {! b7 {/ S1 P) @" N: Ihttps://github.com/guillaumekln/faster-whisper7 D3 L- q5 ~- M" y: v2 K
安装如下:7 F  F% Z, a- l9 J' C
1, Windows 10
, Y; B3 ^! s1 J2, Python 3.10.11
% }) t9 `# a$ E3, CUDA 12.10 B" e. u8 |" W7 e1 E9 @2 f  {  C
4, 在python 3 中安装
! v' |, a+ o6 X; qpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1171 L: u5 e5 n3 g( _1 @' y" U/ H
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。( W" G0 ~1 M& p* q: P1 ]
5,pip install -U openai-whisper
- ~5 m8 v6 v1 `这是向whisper 致敬,可以不装0 Y9 f* M! {$ a3 d8 {
6,pip install faster-whisper
- m/ N* J2 T4 [/ {----------------------------------------& W, b. `  W9 ?7 I* o9 b9 E  U
whisper 我用的命令行,faster-whisper 我用的是python。
" ]9 C' g" v8 P3 ]0 X- h3 |8 g下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:2 p' z- z; M& ]1 x! X! ~% j" ^$ g( ~

& P9 i/ s1 l6 t* y----------------------------------------& A: [2 p" {" q
: C2 c; B9 P% [2 I" v
from faster_whisper import WhisperModel
3 m4 Y  I* q- j2 T/ a6 ]5 s, [! \
8 ~$ y! S/ o! K( b8 j8 Jmodel_size = "small"
' c9 k/ g" a6 g% r* ^' k7 h/ }
model = WhisperModel(model_size, device="cuda", compute_type="int8")- y+ d8 ]1 A, h9 ]

% W3 z8 Y$ F5 O: a. \5 A+ O* esegments, info = model.transcribe(
9 |% m) F! z$ E. i* @    sourceFileName,
$ F3 K% E. w! m/ t    beam_size=5, * O9 h, o- f5 y7 j
    language="en", # ?1 a% u' m7 y; @; D6 _! A& G
    task="transcribe",
/ E9 k- D* C5 F6 I7 X: F& U    word_timestamps=True,
+ m7 f, |8 }  `2 w    initial_prompt = "Hello, welcome to my lecture.")4 n  `' A7 l, S0 L9 M- `0 S

% B3 {! A& e& D( f1 b( [for segment in segments:2 B( @4 W2 j, h/ q; s) U* L
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
2 J2 b# f, `$ ]0 b( s, P3 \' W( c% s  l$ Q5 Z' ]8 }
        for word in segment.words:
: @4 }( W& H/ l% I" a3 g                ' N% z% u  W9 s2 @
----------------------------------------
( q1 P7 u3 W  ~" \6 U
7 ~7 H/ a- C2 @代码说明:/ ~7 K2 Z; f3 R: I$ {" [. e
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
: J: ^# a' k2 D但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
1 A2 O, K) N0 N$ }2,segment 本身是很粗糙的,做字幕勉强能用。; W. @6 _, K# @$ @, t( r, ?
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。. n) n$ \! J& v1 F" z+ [
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中8 f3 ?$ e. X. h+ t8 S8 N
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。4 E2 Z- ?- X+ S. w
5,model.transcribe 中参数说明:! ^. g$ G: ?3 G9 V! N
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数4 M2 u, C4 G7 ~( H" d3 a7 H
其中2 g# X0 ^% A; p! C8 Q& f& |% Q
    word_timestamps=True,
! i4 z2 j: \" J! Y. l: r+ L+ V保证了你能拿到 word,否则是拿不到的0 V1 U# w, ]3 Z
    initial_prompt = "Hello, welcome to my lecture.")( S$ t6 `0 {7 m" C: _  K
保证能尽可能准确的断句 punctuation,但是不是决定性的。9 L2 I! ?8 E" C; u# t: M
其他参数可参考源文件:
. o& B- r5 y5 v& T1 Q+ {1 K+ r# rhttps://github.com/guillaumekln/ ... isper/transcribe.py# P. Q; q& t. H5 v# e$ f$ H
152 def transcribe(
6 x. J' M8 U4 _  Q: j6 R从源文件你可以看到是支持中文的句号断句的。' }- P) ]! B) X! C) B; U' r
: y0 m: y* L& z, |
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。" u% O( F& e" c' ^& @$ W
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
" K2 U6 m& O$ x0 i1 K+ o1 X6 M8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。$ `0 v. t7 Y. |' w

' v! }7 M0 L- f $ V% b! V, ~0 B6 ?) c) s

. a7 k3 S7 F0 @6 r( d1 d

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-6-6 17:05 , Processed in 0.054639 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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