设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ! p7 J) W  ^4 I: P: R% Q" J% `( j$ ^

4 K2 }7 W) v, T借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
9 f3 z6 J# p" P. \效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。6 Z' j- k) f$ c& H7 L
----------------------------------------$ i+ R7 a1 t5 _  m) ^3 n
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
; K- I& @2 O3 q- i/ l在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。5 u- {/ B4 R0 Q+ J! l8 R
----------------------------------------- w+ F# j* l; Q" \
https://github.com/guillaumekln/faster-whisper" Y  G6 @& {/ Q
安装如下:
$ a7 [) W0 T8 ]: G* Q1, Windows 10
1 X) v1 I6 g0 P4 I* U# R2, Python 3.10.11
9 o$ Z! O5 G: Y% H5 e' m! j# e- m3, CUDA 12.1
" s- N" [4 V& u  t9 R, e4 `, a4, 在python 3 中安装( M8 E, u$ }8 H5 y7 O
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117: X8 u& x5 _: w& `" u
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。" Z# w$ q, a2 @. C' y7 H( U- h3 R6 ]) h
5,pip install -U openai-whisper
2 T. f- N! ^3 V3 f" r这是向whisper 致敬,可以不装8 e+ b' S4 l- ]+ [
6,pip install faster-whisper8 c" |  R# L6 B
----------------------------------------, f2 ~. n0 N4 B- q2 F
whisper 我用的命令行,faster-whisper 我用的是python。& W; A, P  k9 O8 z7 B1 x2 h
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
& f$ a1 o& S! o0 U' Y; m( T- `
----------------------------------------
& G" ~  u, s6 B1 X6 m
  E# t: C4 W, n' ~3 J6 Xfrom faster_whisper import WhisperModel
4 i3 w9 P4 D1 f+ P. q3 i% y
: `( {* i5 E' E$ V0 D' }model_size = "small"9 Z1 s/ i  ]; ]/ t* u  N; i

% X% F) q  s. E7 Emodel = WhisperModel(model_size, device="cuda", compute_type="int8")
6 M3 z+ |/ S1 z+ \- i" I  B2 n+ x& J# X
segments, info = model.transcribe(
$ b! e& H  ?" }2 u& |    sourceFileName,
. Q# @3 E1 @! V5 M2 f% h7 O8 ?    beam_size=5,
1 i; m5 z6 I! `9 I    language="en", * Y9 h5 p4 C/ P! h: E5 Q
    task="transcribe", $ S* F! b* H4 N; O& ]) @. D7 L1 E
    word_timestamps=True,
  ]  w( [& q) M) K9 t- o    initial_prompt = "Hello, welcome to my lecture.")3 u! J: o; {: h4 }

* X% v7 B" {% i4 Gfor segment in segments:2 a  \: w# U! X, M
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
0 v9 r( U. u) ^0 ]6 L8 r6 C& ]7 S
3 ~6 z; O& ~0 a+ s* h- u5 R        for word in segment.words:
6 M% \2 u; z4 G& `  O( L                8 m" Z, e  B& q$ y1 z9 R" e
----------------------------------------
& ]7 d% c$ v2 e& v
. H* e) H# H: ?% I代码说明:
7 c8 J) D) z; R+ r$ o2 `1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
6 m& _2 m$ q) [, W( Y% ^7 x但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。! A6 J$ j1 W  w8 B
2,segment 本身是很粗糙的,做字幕勉强能用。
+ {6 R8 b- C! t, `  e: g9 s3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。! F" h, \! s7 |# }
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中. Y) j2 }) ?0 W6 P) A# U# O$ P
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。  K3 U0 t- S% G& z5 y
5,model.transcribe 中参数说明:
7 N+ `* b+ f7 w8 _你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数2 X; p, w* F% d8 Y
其中
, j; ~3 |+ s: s6 V% v+ {    word_timestamps=True,
- `# z$ g* p( T# P, e: ^保证了你能拿到 word,否则是拿不到的
4 n9 r# W9 J7 {8 Z% I' o* M    initial_prompt = "Hello, welcome to my lecture.")
0 q- e' t( f+ M/ d. J保证能尽可能准确的断句 punctuation,但是不是决定性的。
6 i0 T- B( A8 W其他参数可参考源文件:
8 p$ M( Z1 [* ^9 v7 i9 v) Shttps://github.com/guillaumekln/ ... isper/transcribe.py
" v3 I3 k' K9 N2 z! f) k152 def transcribe(
6 u/ e# \8 ]$ k. T6 E2 O从源文件你可以看到是支持中文的句号断句的。1 ]6 n, }) ]& r* L* k+ I3 f! X

7 |7 N: @' C5 ?6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。1 [% I! ^- M. V! M0 _. c9 n
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。5 B' R8 i. ^- t7 Y7 Q# Q9 x* j( v
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。* h3 G1 c- O; d4 J
4 v3 J4 ]0 E+ X7 r
1 n' ?( G2 m7 \' F& s5 W
$ F8 H1 Z" Q6 V3 i

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-6-12 06:36 , Processed in 0.034034 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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