设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
0 a' {- {7 f8 c7 I# [
. t/ {- ]. A, k4 [借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。& b( z3 A9 L" }1 }: G; X
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。2 b  ^7 ^, u: K: h' r
----------------------------------------
' u( [) l9 E& A' `- E显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。2 N7 P! Q% T, v3 ?- f
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
$ S: c5 ~$ A' u: ~" D' I----------------------------------------
! a- I" v, E  ]( c, Thttps://github.com/guillaumekln/faster-whisper
0 m, K2 H% R+ J; Z9 R2 v2 q安装如下:
2 Z6 {; a7 ?+ y: x4 V7 k1, Windows 10
( i' Y9 p! {6 Y7 _9 o2, Python 3.10.11
, y9 e, h$ d4 q/ t, x: d3, CUDA 12.1  \- k+ i- l, D7 q! `6 _" {" a/ @2 a
4, 在python 3 中安装+ A& _6 R$ B5 u. e: y  r
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1171 Y& {4 U* x& j( k& U
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。4 ^4 Q8 K- ]2 q6 M6 P8 w' X$ X2 V
5,pip install -U openai-whisper
( u; n' M. D. k# s& ]这是向whisper 致敬,可以不装9 x" o0 M9 R* L6 ^* x" J, j
6,pip install faster-whisper
: A2 {( p7 S7 B1 z----------------------------------------
" U! g, j: y8 m! ]3 J( v3 jwhisper 我用的命令行,faster-whisper 我用的是python。$ i, S( q. |# B0 p! Y0 d: U
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:1 @$ i2 K# J9 E6 W( @
6 F( H0 X2 w: C8 _$ g
----------------------------------------7 ?' A( r9 B' l! o/ e2 x6 Q$ n+ H$ a

1 w( ]# I6 M* N# w3 u- Xfrom faster_whisper import WhisperModel
9 y7 m3 h4 s) |  U5 T
0 `' P# n$ D( w# [model_size = "small"$ b& S& C  r! ^0 R& ~

  a& V% Y$ j0 amodel = WhisperModel(model_size, device="cuda", compute_type="int8"); H, T* W9 P. g+ g5 n

  k( j0 t. V: R* @  E% E0 ]segments, info = model.transcribe(2 S) P! t8 e' W" r: W: z
    sourceFileName,
; |/ Z- ]/ u: @( t) r    beam_size=5, + h- p* A% }9 C  G/ r% ?7 ]
    language="en",
  w3 P) h: w8 W$ L    task="transcribe",
  f: e  q4 F& ]+ g1 j4 S3 h+ }$ J    word_timestamps=True, 4 E1 _  O& U8 F/ S) \8 f
    initial_prompt = "Hello, welcome to my lecture.")' C# e+ V8 K3 R& F0 k

) }( b/ u9 ]- V* p. sfor segment in segments:" T2 S% y5 o# I) \% _2 {& B4 Y- [
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
) D4 U3 f1 I: j0 r+ A) s* t% R. S+ g' s: c- U" g: S  p
        for word in segment.words:
  ~$ j) r5 t, ?+ _5 V% l/ `               
/ ?! ]# n( C) R2 J. L8 R3 y. t----------------------------------------$ y7 D+ D) `: a/ O' G
6 ?8 w) W: h. z$ D
代码说明:
& F: h) }( k0 @: T1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。# G+ P+ u* r& Q3 W* ~: v2 _
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
( e3 D% u: A/ i8 _2,segment 本身是很粗糙的,做字幕勉强能用。& u, ~: N* l: d4 n% w
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
, R8 Y7 w  `5 D4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
/ u, F0 u& S8 _  I比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。0 D8 N9 h/ T7 x& r+ c" B( _
5,model.transcribe 中参数说明:  n3 T/ j* K& m7 ?! t" e8 A
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
% N7 I* l- z8 n" r' b9 S其中
6 _/ c/ y" r, A( t9 l- h: Z    word_timestamps=True, , r6 I4 m, W. a: L5 L. m$ c
保证了你能拿到 word,否则是拿不到的3 s& j3 _1 A1 s9 y' e. F+ g
    initial_prompt = "Hello, welcome to my lecture.")
, n- ^* }* |2 [保证能尽可能准确的断句 punctuation,但是不是决定性的。
9 ]( ~7 R6 g4 G其他参数可参考源文件:
  @) f- E9 ^7 M2 W. I/ P7 ahttps://github.com/guillaumekln/ ... isper/transcribe.py7 B$ a1 S9 R8 o- g
152 def transcribe($ O  N( ]( n4 q# S
从源文件你可以看到是支持中文的句号断句的。
5 i; c2 s6 L9 N3 l( l3 v. y. j3 E
: A: ?$ V* I9 ]# I' h) v6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。" f7 ^; X" n" C, w
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。1 Q% d7 Z' `4 m. e
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。! q9 I; F" W. A9 A- j; @' R
# E$ }6 g# r/ F  t, E5 q% z

5 j" z$ s& a+ [) _' D5 N4 P0 j/ X6 T  l/ V5 K+ B( T" K

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-5-27 05:03 , Processed in 0.055833 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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