设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
; u- p+ E4 I' d' G! o9 \# N
7 o3 E4 C6 e& o1 h2 C借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
  q7 L/ t0 N% L6 y+ I效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。3 A3 @8 J/ A4 e* p/ V$ n
----------------------------------------
1 z) t! B4 Q. z) i显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。4 S, R  g2 `. C/ ?
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。- t1 x! R; u1 G) I  R, Z
----------------------------------------
7 `: p; Q& U  F* D, Chttps://github.com/guillaumekln/faster-whisper3 X4 J( R1 s+ U: m# \( J
安装如下:+ w: V+ d+ H  e3 V+ Z
1, Windows 103 ^6 X/ W7 u9 x
2, Python 3.10.117 h: H- e4 F8 p. c
3, CUDA 12.1# h# j- S: s8 v. f" B; U3 v
4, 在python 3 中安装: b1 I4 ^1 A! i1 i8 P( X
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1176 u0 f( e: H, D% {
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。& X' E( A1 e% _' |/ w( A/ K- e
5,pip install -U openai-whisper
; @9 y# R4 H2 u4 z这是向whisper 致敬,可以不装4 X* x3 W8 j% s
6,pip install faster-whisper
/ P; p- ?6 G9 d* s8 ]; u9 Z----------------------------------------/ ?8 B8 w) [5 T7 W
whisper 我用的命令行,faster-whisper 我用的是python。. q8 W1 p3 O2 U6 d
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:5 @  C4 j, Z* J
2 I$ t9 j* ]8 N7 y7 z. L
----------------------------------------
. W3 y7 e8 Y+ Z% u( B3 }
& Q$ q3 E& g) Q9 @# `from faster_whisper import WhisperModel2 p4 }3 y6 x/ d1 K. D+ W
6 Z5 w9 A0 l# z( L' H7 o* B; R
model_size = "small"' A- P2 N( W+ l  i6 h
3 X& f) B9 p2 Y3 G; S
model = WhisperModel(model_size, device="cuda", compute_type="int8")
9 h# C0 R+ ?1 I/ w, f; |! Y
+ @7 L! J5 e5 ?" Z5 J5 \# }segments, info = model.transcribe(3 ^/ @" o' r) A1 W  G
    sourceFileName, 0 T& ^  L3 D  I/ h4 t7 [
    beam_size=5, # y$ Y& z" H/ \3 l# c
    language="en", ! {: ^1 [, L8 Y/ x
    task="transcribe",
8 M+ l/ D$ Q, O7 p* n    word_timestamps=True, , a9 U; P- f/ S/ ^1 c5 C
    initial_prompt = "Hello, welcome to my lecture.")
' N( @6 g1 Q( i5 E4 J9 E9 Z- }9 ]9 F( |7 p  G
for segment in segments:" F+ [2 i5 I/ U* u% _
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))# P* d& P* C% F' |6 l2 @1 n; S4 S( [
+ y( p6 U; T, A- [2 ?% N0 A
        for word in segment.words:9 J" d  n' H; \% y$ }1 v. F
               
$ d4 i/ t1 s) [----------------------------------------
# p! L+ |- U2 d( E4 \% x! J! X: `( p) @3 t7 w
代码说明:
+ {. T$ T# a5 [. a+ J1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。: V) D% n& \. R. i' l5 {
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。. p) M; ]& t8 X# t
2,segment 本身是很粗糙的,做字幕勉强能用。- a  `  T* _) j1 n# B, }/ o% X
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
8 S  G* v% R( \1 S" E4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
  P3 p) u) m  J* G- l/ G% z比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。5 ]1 L" H3 z* b% F  r
5,model.transcribe 中参数说明:
1 r' U3 e1 G, X( Q1 F你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数3 d$ R( z& X3 t" i' H1 J
其中1 g% m9 ]/ ?* |
    word_timestamps=True,
7 `3 H( t3 G+ a2 K0 [6 _0 e+ O9 n4 G保证了你能拿到 word,否则是拿不到的
1 X7 y) Z* P/ e& R: C    initial_prompt = "Hello, welcome to my lecture.")/ Q& ~0 {: s% X
保证能尽可能准确的断句 punctuation,但是不是决定性的。/ K$ B0 O7 ^/ F$ E# c' ]; c. S
其他参数可参考源文件:9 o- [4 @, D) U. t
https://github.com/guillaumekln/ ... isper/transcribe.py
! s3 l& s. I8 N# r$ v/ c7 u152 def transcribe(
0 E1 T7 ]/ c  q" `. S: H& l从源文件你可以看到是支持中文的句号断句的。
  R/ g# S1 C  k6 q5 t6 x$ s' y/ O+ Y+ S; G1 _6 F4 W% F8 F; m8 x
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。5 K0 l# J( {6 Z0 d
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。# t+ ]+ U# p2 j* f0 q8 o
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。1 Y# }; H. n$ n) ^( c7 c$ a# d

* p& p. y: ?# u1 Z5 }" Q: K  V) D0 E 9 [/ r; P7 m. V! X0 m

, u6 R" Q: ?. u2 e8 p+ {( A

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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