设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
/ C1 `/ G# j5 m, ?* x* l3 ?( h, I7 Q7 Y3 m
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。# k; A9 K- y( i4 s. G0 H3 H
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。! s0 C6 b" f, `/ p2 T- [
----------------------------------------* F  r* e3 Q' }0 n, _; M+ c5 P+ V
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。5 k9 c: G% P6 {  t$ Z  N
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。0 p5 `2 _) w  K- p# U
----------------------------------------; P/ \6 k0 D2 \& D! l! c- w0 S
https://github.com/guillaumekln/faster-whisper: b2 o3 G. x/ U4 i7 p+ [
安装如下:
6 v1 j4 L+ n. H, Y1, Windows 10/ g' @# Q9 e6 R) n% A
2, Python 3.10.11# j5 q+ w, j/ |( f3 d6 R
3, CUDA 12.1& {- U3 @; I6 j% P1 c5 N' i* |
4, 在python 3 中安装: Y; A5 N- Z; |. n% z
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117/ F4 N0 S* S- R* e5 Y: s. v0 s
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
6 ~* k. q5 }" F- Q! R' e5,pip install -U openai-whisper; J+ L' T. ^6 n7 _: G6 v
这是向whisper 致敬,可以不装  \2 K8 v  k  S* Q, [$ P
6,pip install faster-whisper, l& Y6 i% f: O+ ~7 v" y2 {
----------------------------------------
  I5 P: l  J+ q" C2 {& Gwhisper 我用的命令行,faster-whisper 我用的是python。$ _; n, ~, l: C3 U/ w
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
( x4 A3 H) G9 Y3 k0 A1 G: q
0 u5 s/ _% k$ N+ S----------------------------------------
$ k. E: }  G7 Q. l# L3 Z% N! N: D% V& `  I
from faster_whisper import WhisperModel  u4 C" F1 l3 M1 x8 I

5 `. Z: v) }& n" hmodel_size = "small"0 j) i4 ^; H' o& C

* a1 A- r: v- [% @2 b% O5 _model = WhisperModel(model_size, device="cuda", compute_type="int8")3 i( v$ y7 B5 ?  [
. A: ^7 ^5 |0 ?5 v$ f, y3 c
segments, info = model.transcribe(& Y4 I: D2 y( Y* d# x- ]3 i& p! O
    sourceFileName,
' b( O( M; g/ M: C  Q$ p    beam_size=5,
- e$ j9 q9 ?; H" s3 D1 K8 w( S0 ^    language="en",
) m( k$ v/ G4 N. ~6 A    task="transcribe", ; ?" S' P( C0 ]: g
    word_timestamps=True, 2 b7 f- M+ D' C
    initial_prompt = "Hello, welcome to my lecture.")
$ M) }) Y" R$ |0 V. d8 g- q: k1 [. Y' ^9 V
for segment in segments:, A$ I, [' o# k2 Q' l# e, g
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))4 s9 M1 `) Z# j4 X, D- L1 V, \/ K

, B- f/ E7 O6 q, Y1 X- ^        for word in segment.words:  R5 R4 ]; N+ P8 M! J$ W6 ~
                " y5 r" @0 u" m1 n' V
----------------------------------------
" T4 f: ~+ x/ y2 P( l
% c* k! A9 g( C( r代码说明:' p1 b1 J  j! R) \; b4 w; P9 n
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。- ]. a3 P1 V* Z1 Z
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。' z8 O' j" n- [6 v( z7 c! x
2,segment 本身是很粗糙的,做字幕勉强能用。
' }* E+ ^! c8 Z9 K- f7 _8 r+ V/ r3 S3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
2 \! L, \/ s& g0 Z8 Y; x4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
/ I2 S- H8 a! _2 }$ k( u比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。' |0 w* [6 @5 p% f* ]7 M
5,model.transcribe 中参数说明:
* |. ^( L' z- i) a9 T1 X你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
" p* f5 U  G5 ~. Z. U其中) R+ p, B. t  m) ~* i
    word_timestamps=True,
* g9 [( G2 W$ `; Z, u保证了你能拿到 word,否则是拿不到的
& E5 P0 a( ?& v- q7 t    initial_prompt = "Hello, welcome to my lecture.")* v9 `3 Z& G& b/ s" T
保证能尽可能准确的断句 punctuation,但是不是决定性的。
6 r* z6 \5 u' p- A其他参数可参考源文件:; t& Z, u; s4 m$ ?' v2 S# ^
https://github.com/guillaumekln/ ... isper/transcribe.py& ]' y6 O. J0 u
152 def transcribe(
% T# Q8 _; Q) ^" V/ [/ I5 |从源文件你可以看到是支持中文的句号断句的。
' B, y8 f9 j9 H+ J" N% ~9 M4 L0 e: u& Q# i. h% v4 q
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
8 Q+ ^) N1 X' A1 V7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。2 ], B( ~" J8 q2 g
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
3 `# P" E7 h8 U" f$ U
2 d# ^9 b2 q# C5 M+ R% i4 `
& D8 W% r$ B; [- H4 S; a) v# I1 A, ?. Q( S& M/ A! m4 `

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-12-9 16:34 , Processed in 0.037487 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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