设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
4 r$ @% {1 c% Z& O( B$ o
$ Y7 C- d) k, _) i! J7 @借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
% ?/ g4 R7 V5 w/ ?' ?/ o效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
. n, f2 k3 B' F, e0 m& u7 P----------------------------------------
' T- T2 q$ h- }8 {$ p4 T7 N. _( R显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。2 m  X: s1 E; j/ i
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。8 W8 {0 A6 K6 X7 d. O' E. |
----------------------------------------( i! {% i* A# v2 h  _# M
https://github.com/guillaumekln/faster-whisper0 e, }- d+ ^. J2 i$ M' R! m4 @8 S
安装如下:) ?3 e; B' W7 a  |
1, Windows 10" c. N% @9 K! ?; U  y4 V' l, A. }
2, Python 3.10.11
2 ^* `) O" I+ A; e2 t3, CUDA 12.1
  j; }, w( l: a4, 在python 3 中安装  Y5 p7 Q, E* X2 y9 a* F2 [- z; x' ]
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1176 [2 d7 [5 B! X5 `7 `0 }4 x% r% [
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
9 A6 j" q5 F8 W7 A: b! B5,pip install -U openai-whisper, ]1 ?0 V% R6 U$ q
这是向whisper 致敬,可以不装
! p' y1 d/ a& g; ~6 D6,pip install faster-whisper" g1 p& H, z, ?* J6 b/ W3 h' i. ~
----------------------------------------! m5 f4 p- K" ~5 Q) G6 [# }
whisper 我用的命令行,faster-whisper 我用的是python。
% a* f" N" S3 x下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:( H! y# [" ^5 u7 W$ Q- `
0 b) _( ?# |! W
----------------------------------------
- W. ], t& J" N4 U. x$ \) N
+ b4 r! @! G+ p- t- f, h# m0 W2 Jfrom faster_whisper import WhisperModel
, b6 J+ m7 R  k7 A2 j' [3 H& J2 W( b5 A5 P! q( |% a' R( J
model_size = "small"+ R0 U: O. b# e) J0 B! h
0 @- u4 Z, l! M+ q) M# ?. Z
model = WhisperModel(model_size, device="cuda", compute_type="int8")
  j0 z5 ?* Z; R; b
: i& u: n$ d9 Y* I8 b( ksegments, info = model.transcribe(
6 _5 B' w/ `8 f; h    sourceFileName,
: d$ Z& F7 D* }$ \; g' b0 w    beam_size=5, # T  K% Y9 z: S2 V- v- J0 e/ G% v
    language="en", * s* D7 H1 B% ^3 j/ s2 x
    task="transcribe", : }4 P" [# X+ y2 \
    word_timestamps=True,
9 B8 q* x! f/ V4 B4 C    initial_prompt = "Hello, welcome to my lecture.")
  _  z4 [1 t: Z7 @- n4 u. j; q0 a" A* i
for segment in segments:3 i+ z% Q- _/ ^- `3 P1 Q' z2 U
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))4 i6 G, m6 {* e( ^& g4 q- S

  w5 R0 n' ]  v8 j        for word in segment.words:
. F% A  J  f9 f* n! l6 }; X9 ?# n               
) f. K* e( ~6 @/ v- n% S3 G) k----------------------------------------6 @8 K- l- a& c$ v
! t6 n# \: C7 P) w
代码说明:$ m0 T7 Q& n$ r3 Z" B- N% D1 S
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
# ^) ]1 k( u* t7 U但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。2 q- |' x" t  z) [2 _
2,segment 本身是很粗糙的,做字幕勉强能用。+ v5 A' m3 V$ Q1 ~, S
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
2 \* a; s$ U: }2 W  L7 F3 n; J1 Y& Q" O5 k5 A4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
8 C! t8 d* Q* o- B0 |: B7 M2 w, w比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。* |- M# b2 g! h! T( i0 {4 o5 I
5,model.transcribe 中参数说明:( G2 j- e$ v/ y% Y& M
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
' c8 z; R* _. J- G, R其中
8 t; @  `7 R! K* \, D8 ?    word_timestamps=True, 2 I2 g) a8 l- i7 V; H! N- B
保证了你能拿到 word,否则是拿不到的1 _" p0 Y7 Q' B( h
    initial_prompt = "Hello, welcome to my lecture.")
' n5 O3 \% `7 J7 v5 V9 k保证能尽可能准确的断句 punctuation,但是不是决定性的。0 r6 w/ W, [7 \/ K" _
其他参数可参考源文件:) F9 Q8 B8 j& J$ Q1 D
https://github.com/guillaumekln/ ... isper/transcribe.py
( |2 l/ e/ C, W# D9 j- @: o- `152 def transcribe(( D8 f+ f2 B) s  m5 ^4 J& {+ Y
从源文件你可以看到是支持中文的句号断句的。
- D# R- @2 q" n$ }; ]+ g. _' T$ u) A1 \* d" s
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
* s; C# L" H: n1 D3 W  j' E' }7 X2 n7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
) z& V! k! O1 W. q6 O% o4 S6 \! i8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。, I: [! ?2 _7 {* F% n8 ]
  z2 q# S4 q8 H% `, A
" }: W; I& S- [% c! d

5 d. |% l8 F) |. [* j/ D5 B

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-20 00:24 , Processed in 0.026765 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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