设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 6 `: A3 v3 k# _! q2 N) H

0 [8 z% n3 Y+ `% o. g+ ?0 M借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。; k; ^. o& B+ s' a5 p
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
- A9 `8 Y' z. i----------------------------------------
7 T( Y- U& N2 N  b5 A6 h" H显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。& u5 g" g! B/ k" O8 ~- e
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
  O) t; w$ f8 K* v----------------------------------------2 h3 N7 c' U9 q3 f1 [
https://github.com/guillaumekln/faster-whisper
+ Z/ u/ V0 t! o% R. K) e安装如下:
! y* m- E( C9 z. b1, Windows 104 L& z% e! Y0 t+ \  I
2, Python 3.10.111 Y! Q, \, j1 U) L  e, G
3, CUDA 12.1
3 k# S' Z' W& j4 D+ }6 y4, 在python 3 中安装# u/ l9 ~: p. p  b' [- c: L. U/ D
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
; c& G& f1 M  G) c, I! K这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。; \) @) Q, O, H; C( r
5,pip install -U openai-whisper4 h& P5 A1 U. G* d5 g+ v1 |3 l
这是向whisper 致敬,可以不装# v( Y" ]* Y& P' w, B1 r' R3 e
6,pip install faster-whisper
; t5 N# s  o- E6 }----------------------------------------
- F; C5 S1 V$ \' B) X# y. hwhisper 我用的命令行,faster-whisper 我用的是python。
7 a# `) \* A' V& D- F# q5 C9 l下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:" u$ [5 g6 t/ B  C8 R  O4 h

. X' f3 w( `  b- m0 \----------------------------------------  U6 y. @0 c7 R: l# n
1 S2 c: \# b  @- s* U+ E4 u
from faster_whisper import WhisperModel
' `7 E7 T6 ~$ D" o0 P; C9 ?) h
9 z$ o& m8 y, D7 H/ |7 H; pmodel_size = "small"
8 g- ~" ^+ n" t: Z, d9 K+ h+ {, ]5 x
model = WhisperModel(model_size, device="cuda", compute_type="int8")
. K% T7 j0 |) Z% s; k2 j9 ^9 g: @% ~
segments, info = model.transcribe(
# r/ a/ \8 f0 _% w. h6 t9 G    sourceFileName,
9 `* A& X7 q" d7 n0 H0 K/ y    beam_size=5, 5 }  ]6 L- U9 u7 v, D1 a
    language="en", 5 T" I/ O1 R' s4 i" W, A
    task="transcribe",
. _9 A1 R* F; E( E9 E0 H    word_timestamps=True, ; H! y  d% h5 J0 F% q
    initial_prompt = "Hello, welcome to my lecture.")
1 @0 n  q6 |& k7 v) r% I  M5 _8 X
for segment in segments:
2 C* h3 \9 E1 J& U4 f! m    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))# R; l' S: C- f

9 D& a+ W  r3 O3 g6 v        for word in segment.words:" A" v8 v6 ?& v' G$ g/ G  g& m
               
( W% z# Z8 {! G----------------------------------------. v% ^! m: _& v6 r5 P3 r
& B7 G5 g$ g. f$ x- W! o
代码说明:
  P& ]% ^9 S8 x9 G1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。+ m, e1 r6 \9 ?  Y" E9 J7 G
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
$ `, \5 ?- z2 b& U1 A9 t2,segment 本身是很粗糙的,做字幕勉强能用。
$ ?% ~/ W% M9 m: N3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。- R5 K! ^- e* l- H
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中$ E" F9 g- d' ?9 i7 x" K
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
. c; G! E+ R/ v( `3 h# ~1 [+ i3 m& S5,model.transcribe 中参数说明:
  E! b9 s5 X! u( {% C4 k  T你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
0 T; A. D  j! }1 {其中8 f" k; S# {* O8 j' J' I, ^; Y
    word_timestamps=True, ( }) J4 s2 t. m0 Q
保证了你能拿到 word,否则是拿不到的
3 j. |: s9 d# l' ]% ]    initial_prompt = "Hello, welcome to my lecture.")  t6 n; x) O. p' F0 ]
保证能尽可能准确的断句 punctuation,但是不是决定性的。0 |2 K2 Q0 z$ ~8 `( h
其他参数可参考源文件:5 g9 v0 m5 ~1 ]" [: V
https://github.com/guillaumekln/ ... isper/transcribe.py
6 S8 m2 w! R  Y* @152 def transcribe(" `, y& r3 p% t; N
从源文件你可以看到是支持中文的句号断句的。
1 X* P8 P4 `7 s9 |, E) H  o* ^; a: ~
, B% c; ]! C4 ^- w5 z9 T% s! ^6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
6 ]2 X  o4 V* o' e7 q7 |7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。2 M3 ~& K5 w  a& f
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。6 D3 N( ?5 B, E0 c

( B+ B4 @. u% W, R) }, K
2 A3 G/ V1 t3 ?* O% N, s
; P3 [9 W3 w" |# A' ]9 ~$ n& i) @

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-23 05:10 , Processed in 0.057707 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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