设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
* E$ g& B3 s1 v4 P
/ g- l$ n0 ?* W$ f# A; Z借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
$ h- H) ^5 v$ q. a% a, \5 ]效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
+ k$ r0 U9 U0 F( N4 y. S----------------------------------------
5 L& P+ a4 R& }/ F, s3 ?1 Z# A4 j/ |/ R显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。$ v& N& a' n, ~( R; S
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
1 d. f8 M0 B( J, X; f* F  u4 Q----------------------------------------% X4 d9 ]  _* H+ y9 t5 ^: O
https://github.com/guillaumekln/faster-whisper
2 c5 U2 r# j/ i4 T安装如下:
" [' L( a9 C* }4 a$ i) l! b1, Windows 10, j6 g- B* s, j& N; h% `
2, Python 3.10.11" w& T) g4 g9 L, ~3 ?
3, CUDA 12.13 x5 t4 s! C. F; d& W5 H
4, 在python 3 中安装
0 S  m/ K, o+ p0 w# w0 Ypip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117. P. i! S6 g4 F& u
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
' L9 Y& H$ l* h* }' H6 b0 X; T5,pip install -U openai-whisper
) W- X7 h; X) ?5 ]这是向whisper 致敬,可以不装
/ n" b. T' @5 g! ^7 G% ?" Z6,pip install faster-whisper% j6 a- c$ m. U, k, O2 r
----------------------------------------$ w7 F3 G. y. N3 ]
whisper 我用的命令行,faster-whisper 我用的是python。
4 ~. N* j# D2 C# C7 ]9 ]下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
7 e6 h. W1 ?4 D  n
4 X$ ^6 r1 N2 L3 p: a$ k& f----------------------------------------
  w! F3 a) Z. S3 R
1 K- r& {( u/ Bfrom faster_whisper import WhisperModel; C$ ~8 R, J6 H5 N* Y

% u5 z1 v9 g* A; Z- o& P& h  Gmodel_size = "small"
! j$ f' s; i" \. ^) N0 L7 Q) o8 m' o& f# l
model = WhisperModel(model_size, device="cuda", compute_type="int8")
! d; A- n' J- o; F1 r, c
% k# [$ x$ _- M5 d0 fsegments, info = model.transcribe(+ v* s$ G: m" m: U: b4 q- |# L
    sourceFileName, / P( E, X' Z/ N& R! T" B7 v& C: G
    beam_size=5,
  N7 [8 [  F8 M( A6 t    language="en", 8 A1 s% @0 J1 S, w, K
    task="transcribe",
3 [8 @/ _6 F3 N( H- K/ d: c! @    word_timestamps=True, 8 a9 f1 J( c& \5 n. ^. c/ h/ }- n* M
    initial_prompt = "Hello, welcome to my lecture.")
# f* x# @  Y: M! J0 Z+ M
/ i* G3 `) m" s: `0 xfor segment in segments:
2 r( B2 @7 l# T  b7 J    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))" f' i/ v: ?4 O" J2 b% e
6 L, A+ s; \% V) T; r
        for word in segment.words:) t# A; A- X# ?! X+ Y$ L% k
               
5 o: R1 M* u1 w8 z----------------------------------------
& |. _/ g2 s/ H# ~2 n
1 Z% B3 @) C) l; T; D! X" T' U+ n代码说明:1 _- p% w, F& x: o
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。! t( g, u8 }; x6 O; o/ O
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。4 T! n' n& j$ _2 c+ C
2,segment 本身是很粗糙的,做字幕勉强能用。
. b7 |4 I. C$ x# C3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。' p9 v! ]- n9 E3 R( @
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中* h2 Q+ r+ ^# v6 b+ K: W1 o) Z
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
8 y" {) g/ ~& o1 Q: \4 d- G3 u: g, W5,model.transcribe 中参数说明:
* u8 l( S$ Q2 `! j% \. r+ {你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
- f- S0 E+ D, e4 Z, J其中  W, ?7 f0 _0 |0 B2 G
    word_timestamps=True,
/ S1 o  J& l! ^& H保证了你能拿到 word,否则是拿不到的" @* H5 M, r: O6 j" b. K
    initial_prompt = "Hello, welcome to my lecture.")
1 w6 j- E* N6 p. s; U保证能尽可能准确的断句 punctuation,但是不是决定性的。
! P# w7 N! `" O) h3 ]% K其他参数可参考源文件:2 o& ~7 i" e/ P" d
https://github.com/guillaumekln/ ... isper/transcribe.py# R$ Q: `$ f- _. X9 E5 ^
152 def transcribe(
* z. ~7 T8 r- N& s/ i, ?0 r% Y从源文件你可以看到是支持中文的句号断句的。5 a, i2 Q. m% s0 u& N6 Z% m" g5 H' A
+ B$ \* `% c( z8 a- t
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。! U' s" ?9 K0 X+ Z  t
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。4 B' w' v8 {* _! V$ h
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
8 Z$ |# W- S5 V% F' s
) F& H% u5 F: q% n 0 g- K2 f5 y) ^; w5 X% _
% I  u; R* ?* [$ i! y

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-11-18 04:17 , Processed in 0.034970 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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