设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
7 }) H5 I( _. Q* j# ?( d6 h: B4 x, a* {2 O0 t0 d* \
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
3 H7 {- O4 a- X效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
9 j; p, ^1 {/ \9 Q" h----------------------------------------
& _5 s# t1 e9 z( }9 Z* o显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。- d! y7 ?! U; p7 a8 _' v7 O
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。* X6 ]- Z  p% p. n( j. W$ X
----------------------------------------
: Z% E* t3 R  }https://github.com/guillaumekln/faster-whisper9 |! r2 F/ i0 n. n6 {
安装如下:
+ _/ p* m4 Q& U: O2 P3 e1, Windows 10, x; i  \' Z1 i, q9 f# s
2, Python 3.10.11
8 R1 L$ j, P0 f) n, ?3, CUDA 12.1
" C# T8 h/ w  ~6 v! u' T) e/ Z/ F4, 在python 3 中安装/ m; }, m! m- d
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
5 q/ c  G- h) m; R2 b$ d" I这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。1 V: E! i2 X( [4 M7 z7 V
5,pip install -U openai-whisper
( w% \% r& d# h0 j! `& D9 I这是向whisper 致敬,可以不装
; ], ^- b: J- r7 z! h* y6,pip install faster-whisper
" Q4 ~2 |5 N# C# |: q. ~----------------------------------------8 g  \3 U5 L6 o7 _' S" j
whisper 我用的命令行,faster-whisper 我用的是python。
5 H5 L' S, q9 {% j# H- I下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:( h$ p" \3 W* b3 i! m, W

2 B. T+ h4 C- x0 y! |) o  U----------------------------------------% T. k$ R2 }! Z; T7 |: |; {1 k* m
$ h# ?# b8 f4 l( t1 Q
from faster_whisper import WhisperModel# A! L9 x9 e# Z

9 a7 S0 F/ `2 r; f( f5 e+ ~# _model_size = "small". N" m; H' r! e

' _) p8 D5 Z* H* R7 O& z6 b$ gmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
" A+ H0 s# `) E' C% |* S3 ^
% h7 b% e5 C8 z+ d6 bsegments, info = model.transcribe(0 y1 b" {  k% w, C+ B8 k3 X. k
    sourceFileName,
  {5 x7 Q1 X5 U/ {0 {5 d$ x5 R    beam_size=5, 9 }# I/ d" i4 {0 c9 y; |; E7 a4 C3 V
    language="en", 8 y$ Q, Z, C0 K% x
    task="transcribe",
# i  o+ M7 T# l    word_timestamps=True, . K% i& j: v: ]# e. l
    initial_prompt = "Hello, welcome to my lecture.")9 |. t( c9 M* f" Y4 p' e
/ O' n! I, `2 z, r
for segment in segments:
6 e1 w8 ]$ N4 P/ F$ C( F    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
1 H# z4 T3 ]8 o. W6 u# g3 s% N3 U3 d' }: ~2 A, v8 l' z
        for word in segment.words:
( w( S. h1 s- c* J/ P               
3 Z# h/ c  m8 M* X# p, C6 n" t----------------------------------------
* O- r/ E, f  C, ]  y" O: u8 m4 g$ ]& _+ z9 m
代码说明:
: K+ u2 e0 e/ G  ~. [. n1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
8 d  Q( k& h! W但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。9 T2 m0 S: C9 q* h2 R  B0 F
2,segment 本身是很粗糙的,做字幕勉强能用。2 u* E# r2 E2 m3 K! ~* a
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
  p. I, {7 K2 o. I( u- f2 g! ^* m- Z4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中* w0 k# L* [* [0 {% @+ s
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
* v) u& f6 d" U* t! `5,model.transcribe 中参数说明:
: `8 d5 A( ~5 p/ [2 E- \你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
2 h$ q8 K& t1 O/ p其中
$ v" V4 _% x1 \: P2 M! Y0 Q4 t    word_timestamps=True,
& a& C7 \9 K) n  g保证了你能拿到 word,否则是拿不到的
! j4 E, ^% V$ w! e0 B1 ~# U    initial_prompt = "Hello, welcome to my lecture.")6 a  T6 r6 a- g" S9 D. J
保证能尽可能准确的断句 punctuation,但是不是决定性的。9 R6 u8 p* G7 T1 b
其他参数可参考源文件:: u, P1 Z: ?$ U3 B2 T4 I: j
https://github.com/guillaumekln/ ... isper/transcribe.py0 `$ m8 F- |( c; I6 |
152 def transcribe(9 v. w: h) S/ i" L/ V
从源文件你可以看到是支持中文的句号断句的。
0 u3 h2 |1 i0 j4 S) Z2 v* y
0 b; d7 v8 M) h1 @* T8 S6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。+ s( A' e$ C3 [
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
- ~8 |8 D" t& e5 {0 i4 Y7 `+ _8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。1 b! e! m  p' D( _/ o
: \: a  W& _* |  R5 W/ D+ N
1 Y: z# s/ Y- Q( V' T% v; i  w% H; q/ W

& D4 F6 }& r: q- c

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-13 12:07 , Processed in 0.037389 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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