设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
7 L6 p0 r, o) ]- ?( j- r( z
# x/ H% P" V4 O) _: n# W借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
3 b- U3 C2 L" b( Q' ^# m效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。; b5 _  A* w! O+ t3 W  \& P8 d
----------------------------------------
0 S" r3 ?. p8 |& Y! q5 P1 b显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
$ @8 D# A* }- ?" C; S在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
8 p% J5 e8 ?2 |$ u# l' [5 \----------------------------------------$ P0 F# @( Y" g+ W' ]& {. h
https://github.com/guillaumekln/faster-whisper0 N# O2 f. n3 N
安装如下:: H& I9 Z4 @4 J/ J/ }$ N# V
1, Windows 104 ?  E; N% @- S/ f/ [' g
2, Python 3.10.11
3 V0 u1 U* ]  U; ?4 M3, CUDA 12.1- ]0 G* _  F  p% g0 i% U# z
4, 在python 3 中安装
& l+ Q' I$ o' g- @8 u8 |pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
# G. g! V1 }( b5 C5 m* }) q这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
1 _+ V% s2 r6 P* v* z; d% H: D1 P5,pip install -U openai-whisper7 J: T" l+ i  Y. B0 h9 p
这是向whisper 致敬,可以不装$ g- E; ~- _- M" m1 n% ~
6,pip install faster-whisper
- j' X2 C4 j. R8 H  `9 m----------------------------------------
- T$ [- [: p. n( q, wwhisper 我用的命令行,faster-whisper 我用的是python。& T1 Q; k7 H. j% e
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:9 |+ [% U. p7 d, ^, P3 ]+ ]1 f# q

3 ~2 B% k; j. g* m, V  L----------------------------------------0 D* C& c6 g1 M4 i" w" p

6 ]/ s* h9 l# ~1 q9 O& o& u, Kfrom faster_whisper import WhisperModel
% p7 K3 \0 p) i9 {- E
  ^& N0 Z: q* Wmodel_size = "small"* J: V# |4 A" _- Z
# L% P7 O5 O$ b
model = WhisperModel(model_size, device="cuda", compute_type="int8")7 A/ w% F5 f; K) \: T: Y( W

2 s" n, X6 i! X# E( isegments, info = model.transcribe(
* X# G+ F6 c* z4 ^$ ]    sourceFileName,
# n# h; j- [2 D    beam_size=5, 5 c+ v6 o, \7 m$ C0 V
    language="en",
5 _5 |! C# }4 p    task="transcribe", * Z9 l; d5 C5 s! _- c0 _
    word_timestamps=True,
( G! v* A  {' |$ M6 R" a- H% m: p    initial_prompt = "Hello, welcome to my lecture.")
; r. u" R* Y: A7 ^
+ r8 B4 W) W* ffor segment in segments:$ g1 p( E9 `3 L
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))4 p! c, Y) B; I; U
4 K8 A( j- X6 ?
        for word in segment.words:
4 |3 R& z* N. r2 B                & P" N" O0 K% [' n! `
----------------------------------------
$ ]7 a! D9 y9 d) o
: @2 h8 x3 ^* o; O- H" @1 ^! u代码说明:# V( q4 D2 J1 A8 k! Y* V
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。4 r) Y( ]! ]/ }# D
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
! A4 D0 |2 P; I) u( U" Y% }+ `: x- v2,segment 本身是很粗糙的,做字幕勉强能用。  k* i0 h% \% k7 f# E; A" a
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。5 Z$ q( J& R  t4 ?  l* z
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中* i4 z4 X& X% a% E+ `
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。( o4 w/ K& I, J/ B: Q
5,model.transcribe 中参数说明:
* u; G+ t1 q- W* m6 ?% l你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
$ r6 Z8 e. C2 w5 P, p# e其中
; M# j- e8 a9 _$ Q+ {, I) B# u    word_timestamps=True,
5 J/ ~1 ?! N* G1 m/ t6 y保证了你能拿到 word,否则是拿不到的( O* J5 A1 o# S, h- R( x  b
    initial_prompt = "Hello, welcome to my lecture.")
9 d& Z5 _% ~! n. M* |/ M* D2 {. c保证能尽可能准确的断句 punctuation,但是不是决定性的。/ c+ y. A: d# i8 i
其他参数可参考源文件:
* t* r3 V/ F+ h/ x6 \2 U! ^https://github.com/guillaumekln/ ... isper/transcribe.py, k6 r+ Z2 M3 d/ H$ f
152 def transcribe(
) P5 {- e$ _; T! g0 v2 F从源文件你可以看到是支持中文的句号断句的。7 H* E* U6 a' ?
0 I* w7 O: R6 D( H6 h/ c9 N* f
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。" f+ @- o, w) z( z; W" a
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
8 J3 }& {. \2 e/ ]  u8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。7 s5 m/ h5 _. @! }
- s  m0 H. G: c- {

4 L% m8 j- R6 k/ c: r2 m( a: n) W" s4 d

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2024-5-4 03:20 , Processed in 0.034054 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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