设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 # v$ b$ e  b6 K& |

2 [# `5 x3 u. `) b( N- o借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
5 B0 [' j# L! l效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
9 Q, M8 r  r& |: K2 ^- d----------------------------------------
0 T: ?5 O# k- E显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。2 ?5 ~: K$ |9 t" @, B. l
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
' B) V4 e+ m- K6 Q" r8 b% I# M----------------------------------------+ o4 y% X0 K0 q; Q/ f6 D
https://github.com/guillaumekln/faster-whisper
; b4 C5 ^) B$ p1 H安装如下:
3 Y  _2 O2 m5 D9 |/ [0 u& N5 @* a1, Windows 10
! j- L0 q4 V5 S( b, y* [) i( \2, Python 3.10.116 i' x0 @( a+ v8 Q/ Q
3, CUDA 12.1: A/ g0 @( o: h* E. G/ t
4, 在python 3 中安装
5 N& _, o) G4 A! H! c/ A+ d1 S3 @) e8 D# apip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
5 x# y( C  Y; f# ~这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。5 [2 S6 }/ X3 o! _, ?  h
5,pip install -U openai-whisper$ r9 f7 }+ P7 g4 t0 m! G/ }
这是向whisper 致敬,可以不装
/ C8 B( y1 M* p* \6,pip install faster-whisper% ~! d1 r. H4 ?' H
----------------------------------------
: [+ i& ?3 Y1 j& C% d8 ?' b8 Twhisper 我用的命令行,faster-whisper 我用的是python。; r! ~5 k, g* q* l" L9 V& N
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:1 a8 {+ o) Q5 f0 ~/ M

1 j! H" s9 J' Q( e) Y8 c----------------------------------------
4 U% Q7 L: z0 H# f6 S- l6 B- E) g2 I( A" T9 s' ]! U
from faster_whisper import WhisperModel
3 Q. t/ Y+ y5 L  i; k( r
$ f- g& Y+ m0 P& q6 i: ~7 ^model_size = "small"5 F8 m# f  Y  L+ |
5 M( a0 q) N2 t: z8 t* s
model = WhisperModel(model_size, device="cuda", compute_type="int8")
# Y4 O% O) U. a5 n$ n6 i0 ]9 q- N  t/ {
segments, info = model.transcribe(
0 k6 U! }0 G; B0 T    sourceFileName, 1 n' {$ D- g& z  N# q
    beam_size=5, 8 ~; u7 Y0 v: h3 K; R: {: G$ O% m. @
    language="en",
1 H% U, s5 i6 x3 n, t7 T! m9 W8 G    task="transcribe",
3 K0 l( o0 `. Z; S1 ^    word_timestamps=True,
  ~1 G( }. ~* E# ~. U    initial_prompt = "Hello, welcome to my lecture.")
$ q! O/ H( L) T1 `- Q' D9 b) f  _& K$ a& B4 w* W8 X
for segment in segments:
8 \/ h, O9 C7 p. G: Q. ]    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
, j$ [$ y' H+ o- L! u2 D" m( e$ A0 D1 J/ b6 S+ u& j; |5 k
        for word in segment.words:: [% J' @+ }4 `
                % Q  W3 V- b/ j
----------------------------------------
' h( O( ]. ]: |) D$ D5 u( R2 K6 C4 x
5 E" E1 s4 X4 y6 I$ t2 Q9 z( \' m代码说明:" H9 e& {3 g% w+ q$ W
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
$ z' K: |% v# p0 p& ^但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。, a% d; M# O$ y1 B2 a
2,segment 本身是很粗糙的,做字幕勉强能用。
  X6 y) R* f' \% m$ i; w, O3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。  {. T. V7 {8 Y4 y$ S( c9 A
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
2 j3 x/ p4 T2 q' t比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
( Z- R* }! @4 b! U2 p7 p. c5,model.transcribe 中参数说明:8 U: T; J/ z# x7 I
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
4 ^6 x( C; K) A. a其中
% x1 Z1 Y, W$ N8 G1 e    word_timestamps=True,
& c6 X" ~2 g& d保证了你能拿到 word,否则是拿不到的
, q+ q1 n, s" J5 z    initial_prompt = "Hello, welcome to my lecture.")0 m$ ]  j; `) D% B" W# Y
保证能尽可能准确的断句 punctuation,但是不是决定性的。
) C4 C! f1 w7 ]) r6 {6 }% y. ~& d/ F0 R其他参数可参考源文件:
& Y1 V  ^7 f; M  N9 c, `https://github.com/guillaumekln/ ... isper/transcribe.py
! B& C5 g! I: Y# v7 E152 def transcribe(
& _4 N% X1 t+ f% l从源文件你可以看到是支持中文的句号断句的。% B! Y( L) o8 b1 p: M# S& o
0 B0 N+ @2 x  _4 M" }
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
: }  Y8 T( M+ z' b% B/ }1 l) c5 Q7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。/ T4 |- Z( N- k, O! \
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。, d& E4 h6 Q4 F  G7 _
. m" ~. E, |+ d8 O1 x0 O& S
8 V4 P4 H" G- h% `

. ^& W+ V* O$ O/ v1 p- K: i

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-5-10 09:31 , Processed in 0.066952 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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