设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
, T. T( d0 `# [' A- M/ j3 g! P& a+ d, G
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。3 m5 @* t$ r3 {
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。' p' K" `$ U+ }- i" [
----------------------------------------
/ T8 ?- e! s5 c& Y显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
  g( |! ^2 s1 ^( J, Y. A在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
; }4 j1 v+ P0 t. F% E----------------------------------------
0 A; @& ?0 b0 p) ^9 A) w) Jhttps://github.com/guillaumekln/faster-whisper& z  {9 T- A. F1 U- @3 U5 W+ v5 X
安装如下:  }3 H1 s9 u; Y
1, Windows 101 i9 |" `: M; ~$ Q# g- s
2, Python 3.10.11
, y8 W4 e5 f( g3, CUDA 12.1
) [" X( v; D2 S( t& I6 }4, 在python 3 中安装
. t, _% |6 N* p2 ]& C- Xpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117+ [* @" x* \4 ?' W. R; \7 W1 S
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
" M# \( q$ g7 c6 m% M! i; F5,pip install -U openai-whisper
$ P% N! M1 [: m  p$ m; N这是向whisper 致敬,可以不装5 k2 r8 @4 F9 u
6,pip install faster-whisper
# N' S$ o( t3 q, [" w7 P----------------------------------------1 a. \9 r8 P% `' Q0 Y) X  d
whisper 我用的命令行,faster-whisper 我用的是python。
, S1 R/ B' l! v) F" S6 X8 u下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
" F# F3 i% N5 {+ y, j3 c7 `6 L! \! h3 L- B4 m
----------------------------------------
- h; L5 S3 v9 e0 n5 y$ Q
/ ~0 e' p: I2 D' L* e0 Tfrom faster_whisper import WhisperModel6 v" V4 P  ]3 }+ R
# K  Z, R% [- g6 ^9 {( r
model_size = "small"2 P" h2 y( {; @1 w. l

) {' u& w2 Y) m, h7 Qmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
+ r& r# F2 c& a  M4 S9 {- w4 y
; D6 N( H( T. R% c7 f$ Usegments, info = model.transcribe(
9 H" c* A% F/ ^0 T" y3 `% m" {" p    sourceFileName,
, k( W% h+ W7 `, t* C8 a    beam_size=5,
/ f5 b9 @! ]' b    language="en", ' y: L! v# W* ^/ t+ J
    task="transcribe", ' o) p; z+ t! h4 {% u
    word_timestamps=True,
$ ~$ V* g9 L" H8 o2 @" Z    initial_prompt = "Hello, welcome to my lecture.")
' Z/ ?( I- N- i4 O$ |9 F( C; C( r, s$ V3 T* F9 P8 G
for segment in segments:' _( R+ Z- ^8 t2 d+ d
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
8 O( T: M4 g& V9 {( _- W
. C: Y+ i6 \/ Z2 M) ^6 y2 S        for word in segment.words:! @+ ^5 L8 d% Q
                  w& }7 m( e9 h% |, W$ |1 E/ t
----------------------------------------! M+ N; c2 J' m$ e
" H8 T) ^" g& J+ m/ y% u/ M! x
代码说明:
; E. @8 x1 ^  a8 Z2 h1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。/ o4 W" g. j8 L  z4 o
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。7 V9 q: B& U1 c" R$ |- b
2,segment 本身是很粗糙的,做字幕勉强能用。
" ]! S9 w  _5 o" F# N8 y4 Y; \4 s6 _( U6 }3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
# y1 m( J) @5 C0 H6 t4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中) M# D& w* |$ u& N
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。% K. Y& Z1 |+ ~, l3 @
5,model.transcribe 中参数说明:9 R% _3 l0 f& Y. C# I  Y
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
/ G; X) r0 I9 o0 \其中
  c2 A# U. s6 h% |  ^, ?    word_timestamps=True, 6 J& h8 S# P/ G% W) ~' V# n- c1 U& v
保证了你能拿到 word,否则是拿不到的+ Z  z1 s  b) W3 K: \; U
    initial_prompt = "Hello, welcome to my lecture.")
6 W! ]6 K" V' T( [; a; ]3 U; X! G保证能尽可能准确的断句 punctuation,但是不是决定性的。
0 A. g: _; y0 s8 O" @其他参数可参考源文件:9 \& k* A7 U9 @5 v" ?
https://github.com/guillaumekln/ ... isper/transcribe.py
: s7 o8 L, ?1 U, S; h5 t152 def transcribe(
% E3 t1 H5 N5 m: E. h( l2 c! A从源文件你可以看到是支持中文的句号断句的。6 _3 }% t) C& x' I: ~: V
6 p# y% J/ y- \$ p6 c1 T
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
. E( `; H; a$ x4 `- p; z; G; Y2 @& D7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
8 c7 \% s- P+ Z* i8 J) A8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。0 k2 Y2 `6 i# l4 |

2 `) b5 R" v) o2 ~# z/ G6 ` ) A+ S3 s  J2 L

+ o  {9 l$ H5 s+ R7 [

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-9-20 15:21 , Processed in 0.037090 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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