设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 9 f) V/ q" V! D6 d5 T$ h" ?

- ^; b; c  o+ ~# {6 S% A  `1 D. Z; |2 o借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。/ L1 s0 Q. z1 ?% N3 v
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。4 B3 v, j' ~% M. B2 Z/ O
----------------------------------------
  p! s' ^( l( {6 l显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。7 C8 l7 D4 @$ e9 c) L
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
3 G3 m7 ?$ F  Z/ n8 j) N2 q----------------------------------------& o: |" n) i1 B0 }
https://github.com/guillaumekln/faster-whisper7 F: u! `2 y; n, H) S
安装如下:( ?0 Y. }7 D1 N6 u$ x2 X
1, Windows 10
( L( p) a0 A+ E$ ?6 A8 {2, Python 3.10.11
: k, n8 ?2 Q+ z5 Q0 J7 S9 x8 B; O5 s3, CUDA 12.1
$ A8 e" X: F- g2 X4 |9 r) `) b* a2 `4, 在python 3 中安装/ a9 z' U. x. ]8 A" \& Q  {! ~- X
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
3 Q: L$ K* |  `% D3 O6 C这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。9 ?6 B% j7 B8 @
5,pip install -U openai-whisper
) g8 e0 A$ B! f" U9 ~这是向whisper 致敬,可以不装3 Q7 _# V' P( q2 R5 I
6,pip install faster-whisper
+ [3 a: q5 o5 @' Q# B----------------------------------------
8 ]; v: @7 T( u6 n! h+ M0 twhisper 我用的命令行,faster-whisper 我用的是python。- @( ~. o! T: Q$ o
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
: e( P6 }# t; J$ Q* L, t& o. t
7 D( C& g9 r) c7 J0 }/ d) I, `. T, Q' z----------------------------------------
/ E! z1 z7 |0 u( o* A& I; f3 e! O; _: F3 d
from faster_whisper import WhisperModel
8 a# V0 z$ Z- k3 n3 _) T) V
1 ?3 z) H. c7 r% hmodel_size = "small"
3 g5 G3 M2 l: o) H( J7 v# I! m2 H; G& O" E
model = WhisperModel(model_size, device="cuda", compute_type="int8")% P) U; e8 S1 x0 T& V
/ [3 z! W' L: r( u# e* Y
segments, info = model.transcribe(
- O  v0 E5 L: A, d' }7 O    sourceFileName,
  I  A" ?/ R. \" |1 U    beam_size=5, * U" _: ]- |  ?- d4 j/ j
    language="en", . Q  f5 x6 r: ]
    task="transcribe", / \; p3 X/ s1 D8 b
    word_timestamps=True, 3 k% r: y% p5 D) Y
    initial_prompt = "Hello, welcome to my lecture.")
% D* S% W' y! D, t* V+ v% V: F" E- }& w4 o3 @8 u
for segment in segments:
9 Z/ B; t) n( ~0 D( P    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))) y# D: |2 O5 g( G# \- b

, \; C/ s( ^. ~) t        for word in segment.words:
9 `9 B4 V. r' O" D! {0 p3 O# F; i               
7 r5 O" i2 b  ?, T; @----------------------------------------
. ^) B8 e. q9 h2 T1 l4 D8 {$ D
  D7 C( Q7 ]. q8 P4 U代码说明:
/ d8 }* o* y) n, u8 A' c* P6 n1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
( z& g( s. }% z( ?3 G4 S5 ^. p但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
$ x+ I  p( z1 s/ j1 w6 M2,segment 本身是很粗糙的,做字幕勉强能用。
2 A& j" O, o/ N8 U2 b5 I$ v3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
- Y! w: [. y2 P: d4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
7 o" G1 h1 O. R7 {0 P+ {1 c! R2 j比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
+ f# L! A! a: V$ H/ c: b. f' t5,model.transcribe 中参数说明:4 M' N# |- I6 y" B/ P2 ^. L# i9 m
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数; A: g8 C" D4 X6 _, o
其中$ X7 P4 B& |: V
    word_timestamps=True, # d& {# F, K6 ?4 p8 m& G
保证了你能拿到 word,否则是拿不到的+ g5 _9 M! |  w
    initial_prompt = "Hello, welcome to my lecture."): V- S; ~( V0 J- o" _% K& M* J2 H
保证能尽可能准确的断句 punctuation,但是不是决定性的。
1 Z0 r( \3 |' |" c- L- s+ o+ W2 }其他参数可参考源文件:
2 v* j/ G: ?0 \& e: m+ z1 e2 Ohttps://github.com/guillaumekln/ ... isper/transcribe.py
7 O9 U) [" Q: ?152 def transcribe(
7 @6 U* A% {4 m从源文件你可以看到是支持中文的句号断句的。
" h. q0 E. n, g6 s" g. _) f0 ]) W; w( u' }+ I
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
. ~$ x0 e, v  m$ H8 @$ d: d3 S, S1 z6 ]7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。5 u4 O( [% v3 h+ w, i
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
. D& E* _& V$ f: k) l  L1 t" _. O
+ P) k2 ]. n: d" ^5 z1 w
- s& F0 g2 c6 G4 P4 g& v3 h, C
9 \1 \+ u/ {; M+ [

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-5 04:32 , Processed in 0.057209 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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