设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
/ `9 }1 E6 o4 ?: `3 l1 G! B: ?8 A3 w* A$ s* G7 s
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
( Z' N1 V- v0 K7 S效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
* \6 y2 y9 J+ j----------------------------------------3 h. K1 J2 o% B: n% h8 B
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
- C1 X  ?4 Z0 K# L, L在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
6 M5 Z3 l( n9 M; @----------------------------------------
& I, d9 e! D/ e, O2 H) Ghttps://github.com/guillaumekln/faster-whisper4 @. I& v* b$ d4 k$ [0 u0 d
安装如下:% Q! Q; `; z# r/ [1 t( b
1, Windows 10
3 [, F3 F8 L6 ?" i: B* b% g2, Python 3.10.11) X2 B+ Q+ D, r, o
3, CUDA 12.1
+ L! H0 X' N0 p# `4, 在python 3 中安装6 C  H8 T- q9 E/ h
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
' _0 M1 t; ^4 I! v% e这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
/ W6 T7 {$ w; O! L: m! U/ l% D1 G5,pip install -U openai-whisper
  e; ~; W" n. a: C% ?$ W" u2 a6 a这是向whisper 致敬,可以不装4 ^) S! D- _) _7 V- n. l/ D7 e
6,pip install faster-whisper3 ]& u7 K7 r3 C* q: L1 Y3 n, {
----------------------------------------6 x) f8 `+ [8 X9 @
whisper 我用的命令行,faster-whisper 我用的是python。
+ I3 i; r' t! Y$ e( V* Q下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:& F3 f4 {& [/ W( B$ D1 h- v
# X, ]+ m4 I! F( M. P' [0 H
----------------------------------------3 }9 W3 w& x' _& J7 V3 }# M
  h2 U& `) L4 Y% I
from faster_whisper import WhisperModel/ B; f/ T8 T& h
2 n2 ~" z0 q* v/ e8 F& y: ~, Y
model_size = "small"& H: `. o) q. l) N' Z4 Z& x

/ @* x$ M+ M; X  l$ |! cmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
7 O* \- }' @# Y7 Y6 k. R& J1 T5 ~2 M
segments, info = model.transcribe(4 F2 i3 t; a& L+ L# L' d# ]  `
    sourceFileName,
# r9 R( M$ o) G& l9 X: O1 `    beam_size=5, 6 {8 o* ]: B, Q: i9 L* j4 Z
    language="en",
9 z3 b4 D5 o4 u9 S! x    task="transcribe", ! p5 \! e# N* K$ J/ \, f
    word_timestamps=True,
5 O8 _; n/ P* ~8 ^% G: V    initial_prompt = "Hello, welcome to my lecture.")
! d" z( r1 N& I2 S8 E) m5 M3 U3 L' D2 N  m$ S
for segment in segments:
! n) b% Q7 q7 z% ~6 H# [- ^    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
& n* c, n8 U; `1 ^* G1 j. L
; E$ ]1 A/ {+ Q$ z        for word in segment.words:* M& O, Z; S& [- |2 c# X
               
/ m! N) ?) B) D' \- o----------------------------------------; L. Y  G3 J! Y" s

1 M5 I6 f! D5 t4 a+ X; a7 |代码说明:! {4 m2 S+ o1 ]. v
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
8 C$ Y0 V! N! ~. S但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。2 M- b( d# q& t" s) H8 `% Y
2,segment 本身是很粗糙的,做字幕勉强能用。; J/ b: }2 [; D0 F
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。, p" }4 P1 _7 A, T1 a) s, h' Z
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中2 m1 V" B$ o! M* X
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
9 Z) W7 n, V1 q8 W1 l5,model.transcribe 中参数说明:, F7 P  w( o, j( t2 I6 H
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
* y+ O5 h. \5 X, ^其中
3 z$ t. y* V$ H2 d9 K; x9 w: K    word_timestamps=True, $ T0 |# ^; `' \! c  l  ^
保证了你能拿到 word,否则是拿不到的
/ t5 I, z9 s: u7 p' j8 ~7 Y; k. ]4 f    initial_prompt = "Hello, welcome to my lecture.")
) g2 m7 r! {/ ?! q0 M保证能尽可能准确的断句 punctuation,但是不是决定性的。
8 |' Q8 B: a5 B! e' ^/ M1 X其他参数可参考源文件:, q  D5 N" ?  g/ o$ b- A6 r
https://github.com/guillaumekln/ ... isper/transcribe.py
$ U2 p$ g7 ]+ m& \- ~152 def transcribe(3 k3 [, @8 j' {& \1 v& r
从源文件你可以看到是支持中文的句号断句的。
9 S/ G* y( L, Z" }# o! d% k- v# ?2 |' O5 i$ e5 l
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。# m' T6 A! h- E% e" K
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。+ N4 ^6 b1 M! e3 E4 w% c3 p
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
' i- W' E# k$ x2 \1 ]/ y
# C/ @: b; d! ~6 t
5 E6 G, E4 M& C, Y+ }) P# e2 N
. ]0 v/ s! k$ R. ^7 _& X, @' y& V

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-12-10 10:00 , Processed in 0.031422 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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