设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
* P: R! H2 m6 @( }/ y+ F2 r0 E  b& |2 C8 _
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
9 X) ^& {. j8 P效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。/ z% a5 W  x0 S1 @2 O6 j* x
----------------------------------------
# M: ^" E& e. G3 v! T显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
+ {6 F9 h, y; [8 E9 Z2 U: B# Z8 o在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
4 {& r" M3 d! A3 H. B----------------------------------------
! P! H  W1 m- T6 s# [% thttps://github.com/guillaumekln/faster-whisper9 w; ]- H! |9 q7 B) A  g+ s% S( W! T
安装如下:4 K% ]3 D2 Y! [( G9 p
1, Windows 10
; B/ l  p, Y# j" y  o% e9 K& |# i2, Python 3.10.11
9 r" O4 q% Z* O) T3, CUDA 12.1) B* }6 o& I% V" o5 |* _/ t0 u
4, 在python 3 中安装
, @! H3 e; u+ w9 W- N/ Tpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
) c2 Q' R% R/ ~这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。2 n; }& u' W1 Q8 _5 K( a
5,pip install -U openai-whisper
: g$ [& ]1 ]5 D这是向whisper 致敬,可以不装2 v8 l4 R$ [& Y& z! b
6,pip install faster-whisper
( u  H, ~# u# i8 {5 J! n0 {----------------------------------------
9 c+ V! q  ^8 T3 X$ n7 owhisper 我用的命令行,faster-whisper 我用的是python。7 q9 j( Q; g9 l" K( K3 ]7 I, Y
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:8 q  J  b5 A$ H* H
6 {' p& e: a3 `0 _
----------------------------------------" X- ^, D1 D( a9 Q1 j; V
7 A; ^1 q. u) k. w9 b; H
from faster_whisper import WhisperModel  C. l( Y4 E$ F

7 x# P5 d/ m. a2 k: ]1 S2 q% emodel_size = "small". M; Y4 G6 @: n
/ z( \+ @1 \$ H) L8 e& f1 ^
model = WhisperModel(model_size, device="cuda", compute_type="int8")
: r, j7 |3 H8 u4 D. J! X7 A/ K/ F7 M* o0 Z
segments, info = model.transcribe(
# P% P8 b' ]4 r- @1 r& Y% Q" Z# w    sourceFileName,
8 i8 u5 I* B! i  z  D& P% f9 v    beam_size=5, + K. J  P- s2 _% `* b8 I6 G
    language="en",
2 P! I- S3 M& T! E    task="transcribe", , O9 O" o# v  g1 t
    word_timestamps=True, : H; s# _  c( V0 C7 B
    initial_prompt = "Hello, welcome to my lecture.")6 {; F! i$ P  ?, w. ^! p: _5 U

' E. N- E# {/ y0 m% }2 Xfor segment in segments:
1 L: z9 a3 ]2 E1 H    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
+ i7 T# E4 k) Q- r! \. g' S! h: o/ J# C/ r
        for word in segment.words:
% S. K1 }. v8 ]! w' x, V                , z; \. i9 ~$ @0 N! o& p
----------------------------------------1 M( Z" [1 l# M8 }3 _: m: o+ s
# C3 l: }2 ~' p. X' h
代码说明:
5 c. O6 v% z* A1 M: X1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
2 |' d; Z% u: Q; `但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
" n4 h" u  q+ \  k# j0 M2,segment 本身是很粗糙的,做字幕勉强能用。
, c) x  ]' A9 u8 l' d6 r3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
2 X6 e3 k* n9 j( {9 o9 D+ X/ r( J4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
  T7 f- q" U/ v9 P" F比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。3 u& s/ o) ~1 I- h* H
5,model.transcribe 中参数说明:$ n  J; {; ?$ C+ x% `4 F: K- A1 l, m
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
6 ^. [0 M. U! t  N3 j! i其中
) w/ [9 @: {$ z, X) {  X  `    word_timestamps=True, 2 `0 `1 b3 H" \3 d8 u
保证了你能拿到 word,否则是拿不到的
, |( Q2 Y! `# O4 w    initial_prompt = "Hello, welcome to my lecture.")
8 f( h- ]6 q1 o* k- @保证能尽可能准确的断句 punctuation,但是不是决定性的。
! W% w* i9 w: I$ K& U! y其他参数可参考源文件:
8 b4 D: Y1 D- }  m! Q7 i' Yhttps://github.com/guillaumekln/ ... isper/transcribe.py
/ h# `* a" v# V8 _" Q0 d" @152 def transcribe(* X3 j0 M3 \4 }  `- g
从源文件你可以看到是支持中文的句号断句的。: W1 E! O1 {5 w2 E3 A
0 B  w, X3 Q, O
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
0 B# M4 `, c* i+ r" z' m7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。, g+ K) F% S2 y* L' h
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。+ O! V" P, V& W$ P" r$ M9 z. a* v

0 V3 G# P  |2 \' m( ~" F2 y! i
9 \3 }9 l5 A1 Y. J# Q5 x$ E% U$ s* s. ?, i. K+ _5 _5 b

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-30 07:59 , Processed in 0.060313 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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