设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 6 R0 X1 f9 T  ]% w. I5 Q
+ |9 M( l' W. @) \& L* h5 }; N
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。8 E6 Q% Y% r- N* E6 O1 Q) z) R0 A# Q
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
2 n! s) V, J2 C! M/ H----------------------------------------8 B+ d* F  q) R- `4 h& |( Y/ ^
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
+ {: \3 f1 F; [1 d( [在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
3 `1 a. g, y# w; v* U; b: Q----------------------------------------
# J4 k! u7 s% N  ^8 U* d0 y& o0 M# qhttps://github.com/guillaumekln/faster-whisper! P* B! N) x( ~# g5 Y! Y5 y# R
安装如下:, s& G8 i# \" ~
1, Windows 10
6 N5 \5 w, Q( k& h2 n2, Python 3.10.11
" V1 P; ~5 p8 Q/ Q. k3, CUDA 12.1
/ @8 e7 I( H$ }- f7 k9 _4, 在python 3 中安装
/ V/ q8 o" c5 ]1 tpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117$ ]; \. o6 c* \2 {5 R
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。7 J" E/ ]5 b# O$ \, Y+ n, w% L9 o8 @
5,pip install -U openai-whisper
0 D5 c( `: e: j' R/ M( p. W' p; q这是向whisper 致敬,可以不装
7 N# O' s# o; q8 _' t# p6,pip install faster-whisper! E6 J4 e# U/ M& w
----------------------------------------
: D$ D8 u9 |% F  Q* r4 uwhisper 我用的命令行,faster-whisper 我用的是python。( Z- p* q* d  F3 N  T9 A2 d. D% I9 ?
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:) N( e1 u' c3 |+ @  G
; }4 l& x; Y' e2 I/ ^4 U; N, ?
----------------------------------------, F4 q- e- x1 x
# h. G) @1 ~) ^
from faster_whisper import WhisperModel# N. n* @# B2 T- F9 z! F. S0 f
4 ~6 ^7 ~" k$ d: A/ g3 O1 ~0 \" c
model_size = "small"- u. J& k" B- l

4 X% ]: H0 v5 amodel = WhisperModel(model_size, device="cuda", compute_type="int8")
; ]4 s& f- k" R4 g. a- w. x. y
* W8 E' R! m9 L8 e1 Nsegments, info = model.transcribe(
; Z0 W5 R# G+ I- ^, ^4 Y+ `) Y    sourceFileName,
0 m: O6 U+ O! I: o$ W0 ]$ h. {; n) x    beam_size=5, ' W6 T. c+ m, R, i4 ^8 F1 u1 f
    language="en",
; g' ]" u( J5 \, O9 z5 |    task="transcribe",
- h7 k+ c8 D  I1 \- G/ q' M    word_timestamps=True, 9 |. B" s. [1 R6 u
    initial_prompt = "Hello, welcome to my lecture.")1 G! E7 t+ N3 c& i4 s, d3 t; P4 d- n

1 V( N) x% Z% J& g" ]( Wfor segment in segments:
/ c* [" J* R! K  M( i+ w% y    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
1 g$ z" X4 n& X& `3 J
# m( n( \2 h7 V7 b; S+ a        for word in segment.words:# d: |( L+ k# N9 g$ v& y
               
  S" t$ k! S* }8 k2 `----------------------------------------; d' Z: B  G2 W' Q$ I- d( V
4 v* O4 q$ f& U7 X' j9 |
代码说明:" D) }! U' T! @
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。- u5 K% i% C4 J7 M: y6 Y1 e- n
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。6 ~  I5 p) l8 I4 R8 O4 V1 O& a) O+ ]0 |7 \
2,segment 本身是很粗糙的,做字幕勉强能用。
4 T' h- X4 d2 G: Y3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。1 G% F3 n$ q( u" S
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
" v0 C8 w2 V: G* C' X  L比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
: i8 s' B/ X( j0 _9 D5,model.transcribe 中参数说明:8 F1 c7 b- r: q3 U+ J
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数% B% P  R( U" h. X4 d% C
其中4 Y$ z5 }, o% C  V) d6 A4 z9 O  o( W
    word_timestamps=True,
; P1 V0 a  G; V# T6 O保证了你能拿到 word,否则是拿不到的2 @- M/ W; u9 }
    initial_prompt = "Hello, welcome to my lecture.")
! p' l: S3 g7 V3 ]保证能尽可能准确的断句 punctuation,但是不是决定性的。% i6 P6 N3 ]5 ]! O; ^% @
其他参数可参考源文件:) y- X1 Y; q! X
https://github.com/guillaumekln/ ... isper/transcribe.py4 R0 u4 F- d$ [% S$ z  F2 `
152 def transcribe(
! {; M/ q; ~2 C; e; k从源文件你可以看到是支持中文的句号断句的。
" J7 x4 l: M% R
& \: d; W4 Y6 ~9 C2 Q! m6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。$ z& x* M# h4 ~* Z4 N
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
3 g) j! ?- _/ z* ~6 t& d  o% V/ ~8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。$ \  P" \: a, A% J* K+ Q# E. [
; |# l9 U9 S& Q, J
& R' Z7 F8 h; |6 H6 k# O$ r1 Q
# {. Y8 d6 F( G* u7 |; n" n

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-26 02:06 , Processed in 0.074696 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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