设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 - a- R9 ~: r9 a  t/ S8 [
$ M, L4 O3 @3 [  N. ~
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
3 A& r6 j% j1 X( |效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
$ k5 t  Y& U8 `7 U8 R) s+ |3 `% y+ ]& a----------------------------------------
0 |: v6 h$ F7 M显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。+ P, U% N6 G* @/ z8 E8 X& F4 ]
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。  f9 T# h6 x9 W. o9 a5 b* x1 H
----------------------------------------; z/ ]7 y2 m3 Z- ]3 f. l; A% v
https://github.com/guillaumekln/faster-whisper
" Y5 s$ b* d, l2 q% K+ I3 _安装如下:; X  `# w3 f5 ]8 g
1, Windows 10
; y/ Y4 n4 l+ g) l7 z& Q. y8 x2, Python 3.10.11
# b/ f8 \$ k# r9 f4 `9 |: Q3, CUDA 12.16 P& B3 a- ]- v
4, 在python 3 中安装+ `* w/ s+ A# ^/ c4 a
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1176 A  }8 f+ u! J. W5 d& A3 O" o
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。1 o/ `* m: p  ]  V; F
5,pip install -U openai-whisper1 w* U) e8 e6 L$ a6 B9 e" [
这是向whisper 致敬,可以不装; e! K. A% V. }" m' N) w# m5 o
6,pip install faster-whisper
, t+ @0 j- k4 z1 ^# O7 `9 m* s----------------------------------------
  r! a9 ]! ^4 Q9 @0 jwhisper 我用的命令行,faster-whisper 我用的是python。5 X6 J+ J  h( B/ X
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
1 x1 D9 r9 _* X5 p7 R9 q2 D
) z) W( N* s" N) [9 y) d9 z% s----------------------------------------
  e" h! s2 ^- {8 Y. `. }; ?  y* y) G  e8 s4 o8 a: v
from faster_whisper import WhisperModel
4 _. g; x1 |8 x! J! |3 y  a- V- J2 J6 w, {5 T5 ]2 J8 F
model_size = "small"
6 ~4 ]% W1 J' p. U9 p; F$ H6 }1 l0 a  G8 V- y2 M& ?3 y4 A- v
model = WhisperModel(model_size, device="cuda", compute_type="int8")7 N9 F% c. [! i2 J7 d+ ~
7 @/ G! t& {4 B, H7 h1 G
segments, info = model.transcribe(" h% y+ _8 X' Q
    sourceFileName, 2 r. Q! W8 W/ t
    beam_size=5, 9 V% a& e+ ~" A$ o6 E
    language="en",
7 ~& i/ k5 g( x+ s  h( I    task="transcribe", : k! f$ Q" U2 B% K
    word_timestamps=True, ) U- d' U- Q( P: O9 W  O) g
    initial_prompt = "Hello, welcome to my lecture.")1 {% ?) C: R' ^' ^
8 t7 M* a5 ?9 v$ R
for segment in segments:6 I: m: v. T. b$ H
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
& c" i& y# G( d, V- W) e3 ?- ], y9 v4 u" a. {
        for word in segment.words:
' J& W' P) V  ~2 Y* p0 l+ ~               
0 D/ S* D/ U7 ?' m. w----------------------------------------5 \- T* R. c* I# g
% l8 J; i6 D$ q( j  g) C
代码说明:
* d* }3 k7 s0 I; M1 Z' ~1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。) R2 a6 G2 t( S/ w3 {
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
$ V: r7 N0 b, o3 q9 K6 H3 _. A3 l/ Q2,segment 本身是很粗糙的,做字幕勉强能用。0 p6 I" s, c9 {
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
3 ?) x4 G  i& L% P4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
" X* w- {5 q( w1 \6 `比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
0 V0 j& A% U+ v0 H0 \- ?% M7 R5,model.transcribe 中参数说明:+ u# {1 H' v- N* M/ P
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
7 h" u/ [8 \8 a8 Z- \其中6 j, p+ R/ ?9 l# b$ y8 D& l: V
    word_timestamps=True,
" w: ~9 o) b- o5 a5 z7 E保证了你能拿到 word,否则是拿不到的
6 ?7 {2 S/ U6 [. R8 Q; u- s    initial_prompt = "Hello, welcome to my lecture.")
. V, f2 t# h, Q7 b) U. I7 t# P保证能尽可能准确的断句 punctuation,但是不是决定性的。& _: `/ C& F: G0 R0 d: U
其他参数可参考源文件:
7 i% E4 E% e2 I; X( X7 ]9 ohttps://github.com/guillaumekln/ ... isper/transcribe.py! m+ J4 g; ^) s( e5 G4 k1 s8 B
152 def transcribe(- h" ^6 T, \1 \
从源文件你可以看到是支持中文的句号断句的。5 e# I% b, r/ E
: ?: V5 Q5 Y2 G; S4 {( d
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。* W6 V( o1 v" Z3 A8 p
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
1 S, @  \  y" ~. a9 S$ U. L2 T8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。! Q( X. f, N& ?$ {
) h. k1 N9 W% d. b9 x

5 C+ K  K  G  \6 l* a% ^2 I" w- n
& X' _7 f2 i# I- ~% @  _2 M" k

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-9 07:46 , Processed in 0.059588 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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