设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
2 u: ]* c4 b5 |: X
; x% b! o) n& m; t1 {6 m$ o4 I& M借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
, _. F: I$ h# c+ n$ \4 H" @: e效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
7 n/ P3 j5 D) f& a8 Q- F----------------------------------------' l3 @1 D4 F; R/ b
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
6 c$ `9 g9 @5 j在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
- ~1 f) O6 s/ H" S3 J----------------------------------------
$ Z' W0 n5 H, E  \! Y2 G& s; Ehttps://github.com/guillaumekln/faster-whisper
, q- _1 C+ g3 i# b  ]安装如下:
6 \7 \6 h; u5 C6 z9 A1, Windows 10
2 D$ q/ x1 d* n3 D& a( Z; ]/ p2, Python 3.10.118 g# J" f$ P& O
3, CUDA 12.1, c$ F; s& L9 |% _) I
4, 在python 3 中安装2 H0 k5 J1 n& J( D- X0 ?' @; e1 W
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117- }: m0 q, l6 C7 p- O
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。6 R) d; ?! J. u
5,pip install -U openai-whisper; n$ b" }; j! Y
这是向whisper 致敬,可以不装! M- o7 k) h7 d. @  F% U9 s( |
6,pip install faster-whisper: u! K7 Q. D4 s; C, V8 [2 v& o
----------------------------------------
  C, ^7 i" `. Q$ Pwhisper 我用的命令行,faster-whisper 我用的是python。
9 [5 m8 z: O( \4 U) u: a7 H下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:: a2 v$ H9 o/ ~! B% B6 X" Z

& o! f+ n" ?/ L- `# ]2 s2 X% d( t) s----------------------------------------& k3 S/ |6 J& ]
( J; J& x) G) K! @! @, W. e
from faster_whisper import WhisperModel
( {- d- r+ h) Q5 _7 u: Z- s# i& z8 `3 r) X+ M8 H
model_size = "small"# `, X1 k: O, f4 f; ^3 }
# W5 S  T) h( t' T7 ^& L1 W/ [5 w
model = WhisperModel(model_size, device="cuda", compute_type="int8")& \# E4 S' k% p
! W/ k) ^) p4 O4 n
segments, info = model.transcribe(
/ Y% D# I( x) {0 I5 V    sourceFileName,
& y% ^4 O* t% f' X    beam_size=5,
1 n1 v7 t+ C. e. O: U; [& T    language="en", 9 w  m: ~7 o$ v4 a; Z3 ]9 X
    task="transcribe", / {6 j: G- P4 G' g6 U* v" Q* S' f
    word_timestamps=True, " {/ a! ^0 h& d3 b# G/ a# M
    initial_prompt = "Hello, welcome to my lecture.")
  _" @' E+ k8 g; j8 N: l7 k
, _! y7 ]+ i3 }! x& w' tfor segment in segments:; ^9 Q4 ]! |0 L" I, p; G
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))7 F9 X! Y4 P# _' v+ Q+ g( J4 o: E

$ G" p  t! s& p# R4 D# O/ m0 ~        for word in segment.words:
% W5 K- J" @* u" x  Q  R8 ?                ) @6 t% x# }: Z
----------------------------------------
8 g6 o* p# V) _3 x* \
) h  S% H0 C) D. J代码说明:  w# b# d) ]6 B4 Z# V
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
: l# ]- v7 R* S% ]* n0 J* E但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
- l( D# g; m# A+ [7 ^+ m# o2,segment 本身是很粗糙的,做字幕勉强能用。. M. [* z1 |6 g1 a) p0 o  W
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。5 D- A- m, d3 e0 f  ?. R" }. Q: i
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中2 _# Y! i: _7 M# ]: B
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。: ?/ s# a: Z2 g; z. S& h; a3 ]# V
5,model.transcribe 中参数说明:0 P' S: W8 ~% ], y( o7 n! _( G% r! R
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
( K: s" |4 H8 z/ {1 y# g# p9 G2 g! x其中8 ?( p$ L  P- s) Y% E+ j
    word_timestamps=True,
8 E) Q4 Z' V. A保证了你能拿到 word,否则是拿不到的0 m0 e5 a3 n: x1 T# _7 k
    initial_prompt = "Hello, welcome to my lecture.")5 A/ q# [7 A' k  D
保证能尽可能准确的断句 punctuation,但是不是决定性的。
5 M1 C7 z" ]1 m其他参数可参考源文件:
5 K' S' e+ @! ~1 m5 b; Q2 A% rhttps://github.com/guillaumekln/ ... isper/transcribe.py
9 c, G4 n9 x) ]" B5 }  |152 def transcribe(/ m3 c, Y( \; u8 `# B, k- B& z/ F! i# A
从源文件你可以看到是支持中文的句号断句的。
5 F  u5 q: `9 s3 _* t& k5 ~! D% G% n% `
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
+ ]# D: j" L  Y- ^& E8 u: s7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
5 r2 I/ x8 N0 Y/ l8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。) A+ |. x9 a4 r+ W. D  a

0 z. q* d# n4 X% O6 E9 _
) p* l8 n4 e! I+ h
/ s, }/ ?- O; o' R

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-6-12 06:50 , Processed in 0.034201 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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