设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
, H  P- B; q0 R) ]/ t% w9 ~0 J; U# L: O
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。+ ]( J$ P; g3 t8 X& w0 S
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
( x, ^  _1 l1 D, N$ k. i- }$ u: S----------------------------------------
' C& k2 X8 q* g  @- G) ?, g" {, o显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
& B. f& P0 w+ @在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。5 F" C. \- {! D( n( o  v6 w: K
----------------------------------------% B9 ~, ~# ^; A. B% T
https://github.com/guillaumekln/faster-whisper% ]5 n& E  E& I
安装如下:
; @6 K% v& r* R) w4 u' o$ f- p" V- J7 C1, Windows 10
# F% D7 D6 q2 h( M; u5 m2, Python 3.10.11
, [* R" ?- Z/ D4 n3, CUDA 12.1
9 m0 k, C! Q& {6 M9 c4, 在python 3 中安装; Z) g* u0 d! ^
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
2 {2 y& }1 i5 s* ~! ^2 g5 K# v8 y这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
" a! c. q9 ^0 u  K, s5,pip install -U openai-whisper+ s1 M& z3 y! ^/ g
这是向whisper 致敬,可以不装
% I4 e! z  Z9 y# n% ]6,pip install faster-whisper
, V1 @3 j( D3 g4 b* X6 v----------------------------------------: \, T3 s3 C! g' ]" x) ?, s
whisper 我用的命令行,faster-whisper 我用的是python。
0 Z; }- S# f- a: l) M4 j% u- w* Q9 i下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
7 F! Y7 {& @$ V8 w" D& k
; b1 k" N; s8 m3 R----------------------------------------) ~% @: S: Q  [7 k

$ \( {0 @; ^6 m  t  R  n: I3 ffrom faster_whisper import WhisperModel
! Z" W8 `' A& q% X+ Y  g, U+ [* D! E9 ?
model_size = "small"0 i5 p" U" q5 x0 @

9 q. o+ n' t# M. F( V: ~model = WhisperModel(model_size, device="cuda", compute_type="int8")
  O- v% z2 k6 W/ v) }1 L4 R. o' i
segments, info = model.transcribe(
6 x; s0 E2 U& D/ [    sourceFileName, 3 b% u3 s9 _. s) A; ?- \
    beam_size=5,
5 n* s- C8 o4 H; ~) U( i    language="en", % u! a& g( l# q5 R
    task="transcribe", 2 Z# j- N5 _9 n0 P3 k
    word_timestamps=True, 7 i1 g, @7 m, f% H
    initial_prompt = "Hello, welcome to my lecture.")
% ^1 M$ }+ A- b/ P: D
; T+ ^" J6 u+ n0 `  ], f8 q) \4 Ifor segment in segments:
6 W5 l* [) u: t0 y* |9 B0 v    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
- G- J$ q7 h3 u9 b
% m2 I7 j# ~' @" l        for word in segment.words:
0 f9 X" I3 a4 ]( p, m- p0 A/ s# ]2 x                ; p; j0 ]& ^+ c1 W; P
----------------------------------------$ L5 m4 T; R; x" w' l, ?& y0 U0 X

9 v' s# e. ], j# b' v1 D% X代码说明:, P0 r3 R! @5 Z/ C% c1 y2 @9 j# ]
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
; v6 `3 _+ H5 Q9 @但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
  P  a( A7 S5 I, u$ k- @2,segment 本身是很粗糙的,做字幕勉强能用。* ~# }0 s) C9 y( h, v
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
2 Z& z2 D* X) i  N: L5 H+ N4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
, J6 m3 q" ~6 q比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
$ P3 H* N5 Q' j9 Q. ^5,model.transcribe 中参数说明:% ]9 @+ U7 w1 C2 L2 Z
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
" D1 y, ]' }- w% I0 k其中
. R+ \& v- q6 [* Z' O' {8 h: U    word_timestamps=True, # H9 g- m! k  Z5 _9 Z6 k1 B" U
保证了你能拿到 word,否则是拿不到的
' ?+ S1 g( Y! S: T% C4 K% `    initial_prompt = "Hello, welcome to my lecture.")
. N  ]. D8 M. p" v: f保证能尽可能准确的断句 punctuation,但是不是决定性的。8 H7 Z# T( e1 o" D( n
其他参数可参考源文件:
$ i1 W& B: t4 b% Z: Z' Bhttps://github.com/guillaumekln/ ... isper/transcribe.py
" W2 d/ H' m7 P' ~# \152 def transcribe(7 H2 X9 P; ~" |1 ^& t. G3 S
从源文件你可以看到是支持中文的句号断句的。' `  S% ]- g9 K$ y

& ^+ _9 Q1 W" h1 b4 s1 a6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。  n" C% |9 f+ M& X/ n, M& v0 l
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
9 s( d' P9 N  `0 m) P8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
, f6 W7 P% i1 D9 g0 ^# F7 T3 K
9 W* ~% r: k! X# C  g6 i; q : d$ h5 Z6 l3 e+ Z1 b( z
' W- o" F( u* }- s4 D& E

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-10-27 03:17 , Processed in 0.035920 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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