设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
5 _2 R( L4 t5 E5 A6 Z  |- e+ L+ W0 I+ o6 M  p, j. r
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
; X5 E4 d5 b; ~) |效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
) X! `1 l0 `! ^2 j8 ~8 Q2 j----------------------------------------( z/ R- t2 k' X0 _
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。4 G, b$ m4 f& w8 g; F& p
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。" ?9 k- i: V( C1 ~0 s8 F7 c/ k
----------------------------------------  c) ^, F8 ]% M3 D; U  _2 [/ ?: E, `
https://github.com/guillaumekln/faster-whisper
; E+ g9 m% l/ t" U安装如下:0 w+ I: s1 b+ f5 T+ i+ {) U
1, Windows 10; c( s1 E/ e/ Z: H, l
2, Python 3.10.11
5 k9 S0 |8 ^' o5 {) e' a  e& G3, CUDA 12.17 \7 i. [) m" B: l( v+ b
4, 在python 3 中安装
" i: N4 A* l5 `2 }pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
) [- H$ v: N& _4 q( A, y& i5 t这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。( Y( j2 u( a0 O9 ]+ Q0 ^
5,pip install -U openai-whisper) b/ R' Z2 `* b7 X8 `
这是向whisper 致敬,可以不装
8 i4 {: h$ C5 @) _3 ?% A% E6,pip install faster-whisper, m8 Y* b& P: H$ g
----------------------------------------
, s0 S" n% n% jwhisper 我用的命令行,faster-whisper 我用的是python。
2 B! L) y) K6 s; D' g" u+ O+ x下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
1 H3 H2 F) [. p% F$ p/ c3 [/ q/ s* {
----------------------------------------
! i2 U& s2 _2 p& N1 }0 s2 F& R  _
: Z8 j) U5 }7 _7 L" c, Ufrom faster_whisper import WhisperModel/ S5 X; x& x' r9 O
4 T) c1 W0 c6 |5 o; D) K
model_size = "small"! ]2 g5 D" D7 _4 F/ ^

( ?! N7 F5 ?0 m- F9 Lmodel = WhisperModel(model_size, device="cuda", compute_type="int8")9 j: q5 ?: S: K4 ]

8 b0 R/ X7 M8 R: t% c' T* M& Tsegments, info = model.transcribe(! |; J/ W8 Q* `/ B& P
    sourceFileName, $ g- [3 [% Z  z; K: ?+ z
    beam_size=5,
+ U! ]% U: ^* c1 G    language="en", 5 G( X4 H4 N! w( G8 S5 {
    task="transcribe", . z3 e4 y. @, Y0 K) _
    word_timestamps=True,
& ^# R/ O+ }3 j; J. R& Z6 a% m    initial_prompt = "Hello, welcome to my lecture.")
/ V1 z( Y! e4 R6 p% h- D0 V. m' N0 o% u" d# T6 l+ I( T' n0 m
for segment in segments:
8 c9 F  i5 P. h  b    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
- @2 O+ X: |) P- G( g& Y. j& l+ N* o
4 A* f7 y) }# ]4 T        for word in segment.words:
7 C8 {( K+ W8 O" e" t               
2 X  e- g+ }& ~( B) ~2 v# N----------------------------------------
* R. i, j3 U" e6 c& f4 M  \- p, r4 O9 p0 s
代码说明:
6 F' i  t5 e3 \% X1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
' w4 E! n: _; W1 Z5 f8 H6 D! ~, ~; B但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
1 \1 {. m! P* b7 U& m. w- n2 t0 \( `2,segment 本身是很粗糙的,做字幕勉强能用。
; O4 X" J  w. L4 R& m6 k. H3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
0 B/ |3 h9 L$ r4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中! |+ C( w" m( c3 I: d2 ]- m
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。' {( m3 K" F4 U6 y
5,model.transcribe 中参数说明:
) e( Q# [( l  @你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数2 ?7 x8 B; L. \: H6 I0 o* x; j4 N
其中
% x9 c4 H% C1 i    word_timestamps=True,
, T! `; p( x1 A  y保证了你能拿到 word,否则是拿不到的3 q7 v; M6 I) g4 q; f
    initial_prompt = "Hello, welcome to my lecture.")8 f* N/ N; ^+ @+ a  w; }5 k5 r
保证能尽可能准确的断句 punctuation,但是不是决定性的。
- ?2 B5 Y5 E, R  X) O0 }其他参数可参考源文件:
9 ]$ K8 B0 G' d; g& S$ q4 f1 uhttps://github.com/guillaumekln/ ... isper/transcribe.py# {4 q) s0 U- s
152 def transcribe(
7 `7 v6 O0 m- Q* \% [. [从源文件你可以看到是支持中文的句号断句的。6 o2 \* c2 F! F) Q/ ?4 j

# @. O: w% Q2 G4 v6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
1 \6 Q1 b2 z- R) B& j( I7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。- ], s; U  O; M* w. R  u5 c8 ]
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
- J2 D2 W0 d( P2 I" d
. {. v0 E; R' T4 }2 e. g% S$ A 7 a) X: ]# \8 s# j1 D

" H# K$ ?& e. h/ `! U8 z, w0 B

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-5-18 10:45 , Processed in 0.067043 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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