设为首页收藏本站

爱吱声

用户名  找回密码
 注册
帖子
查看: 4356|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ! Z) I- m2 u- Y* V% a

. w  {+ o* _* B  f6 r7 R9 o借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
5 E8 w( P& O: f" ?8 j# Q) t7 Y效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。) N$ n6 ~& Q* u$ {' Z
----------------------------------------
0 m) x" S3 |  V8 u0 ~1 c显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
! J. U, U% K( p7 r/ v6 q. ]在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。7 Q' s* \. }4 `7 Q" x
----------------------------------------! x; t) n7 I7 |$ u
https://github.com/guillaumekln/faster-whisper" f5 w4 b9 s9 j1 ~( F4 _. i
安装如下:6 V1 K% _/ q# c' U$ N; R& N
1, Windows 10
5 N- b# u' P" \2 \2, Python 3.10.11- ~* e& d4 @( P3 O" N  l7 ~
3, CUDA 12.16 K9 F7 S$ [, V$ N, p2 g
4, 在python 3 中安装# |( Z! n1 }$ s" U6 w" }
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1176 S: l- O% J$ w3 c) ]9 m/ i1 C4 o
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。# i9 N0 r# L1 n) w9 W+ c: R
5,pip install -U openai-whisper* K5 c6 j/ J) g% ]/ v% K& [
这是向whisper 致敬,可以不装! |0 D5 i3 [1 F
6,pip install faster-whisper
9 L6 G! T) R( ^* t8 C; h2 ?5 y  C----------------------------------------# D' ]3 x1 f! z& x  A  D
whisper 我用的命令行,faster-whisper 我用的是python。
$ u# G/ k' k' e# A8 \7 `下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:4 Y- S7 E! \% h% l4 m

1 H& t" |5 Z* e7 f----------------------------------------+ b  w! k- [) \; d8 m+ X0 N

! @! ^5 }5 a3 h) d- M# ~from faster_whisper import WhisperModel
1 I9 n) ~# H0 R# Q- {: W8 \5 `1 F; T
model_size = "small"
. M) v9 H1 o, J% `; l: ~# Y4 A) j6 s. f8 v+ j% ~) q
model = WhisperModel(model_size, device="cuda", compute_type="int8")6 e% t6 k# t' a7 F; z

/ ]$ a8 N7 C  ssegments, info = model.transcribe(6 N  |) S9 C" U, C$ c7 A+ ~0 |
    sourceFileName,
, u. M( _2 l4 m* f$ b  l) [    beam_size=5,
& w0 W- I/ j' l! h/ `    language="en",
% g# v. \9 }& H9 L+ H    task="transcribe", " ]$ `& s0 S1 Y1 Y
    word_timestamps=True,
, w  K' c1 f+ I- q/ E    initial_prompt = "Hello, welcome to my lecture.")5 u# P$ U- b" S9 T3 J& S. ?
" Y$ ~4 }- ^2 u. J+ W/ i/ ~
for segment in segments:5 V+ ~) o1 u1 D- S5 y. P2 {6 E
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))! A" {" y9 V& p% ~1 e  ]
2 B5 Q+ R* t+ _: S$ D0 S, B, O
        for word in segment.words:
9 |$ }$ T; a. q' w8 c/ }; a; F) Q                $ u$ W) o2 X& R! a9 ^7 W
----------------------------------------3 n7 \4 x! j* X' ^# g

" T7 \& f3 j8 e' r代码说明:) J5 Y. K2 F. i8 N0 R: g# v
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
: c" t6 j& o2 W4 C" y+ U- W" K但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
- R1 K+ S" u* {: d/ h2,segment 本身是很粗糙的,做字幕勉强能用。
, `: A) f+ {4 ~, M3 ~" \6 W3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。% P$ [6 d# k8 f4 ^4 P9 Y
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
' W: I! j$ q. n. F比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
3 p8 s- q1 W! p+ P5,model.transcribe 中参数说明:
% K& ^* c: _# w# O8 r' i5 h; [( n你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
. x" A  b+ h9 x其中* n5 \# }7 S2 @8 T
    word_timestamps=True, 2 L! M3 \9 A% X1 ]1 [# z( f8 |
保证了你能拿到 word,否则是拿不到的# ^' {# ?, k8 S+ l: K
    initial_prompt = "Hello, welcome to my lecture.")
& S. |1 C8 [& c  U& |保证能尽可能准确的断句 punctuation,但是不是决定性的。1 m( s$ H( D! y) k8 H0 Y3 S# H: M  {
其他参数可参考源文件:1 G( p. f0 J1 i# i4 ?
https://github.com/guillaumekln/ ... isper/transcribe.py
$ r9 ]# q) }3 a# x3 Z  y; ~8 \152 def transcribe(3 Y) I+ S6 ~4 y2 N: y+ p
从源文件你可以看到是支持中文的句号断句的。: S$ E9 @& Q. b, N
* ^; ~& p* o2 d
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
3 {9 L3 g9 ^& k) A; c( C7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。! L9 {( v5 h8 D+ M: w( ?
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
) C+ L8 Z6 l; }: F) S
5 A5 Z  y3 P, r4 J; g 9 N; ], b5 Y! P
* R7 v) _6 i% G" u

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-5-14 13:03 , Processed in 0.032223 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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