设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
* s4 Y% A9 M5 E) O" o2 m( L$ C4 b' z6 F* C) m: D
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。$ H1 M- F$ P7 @- Y
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。' \% o+ S) Z+ \: l$ @
----------------------------------------
5 G/ A1 A" U4 [; J. \显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。3 r8 X6 \. f( ~) p
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
/ R. u+ ^% a$ r' A----------------------------------------7 m5 u& A; W8 f/ w7 K8 _$ M
https://github.com/guillaumekln/faster-whisper* @6 B- ~$ y2 i  _: h3 v/ `
安装如下:
. c, E3 ?) ]# y1, Windows 10
1 F  w# y/ Z& U- r2, Python 3.10.11+ f, f4 j/ k8 F
3, CUDA 12.13 _& W. W( J: {5 M1 j+ ?  c* A, S/ d. G
4, 在python 3 中安装% r( D! S9 o# w  R' U/ Q
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117" f+ M# k0 P6 B* o- s
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
2 X- @. z3 L7 Z2 p0 y5,pip install -U openai-whisper
7 j' a* d* f+ d" T$ u* M这是向whisper 致敬,可以不装
) I, [: o+ k  j( d3 Q( C6,pip install faster-whisper& w: s- z7 o# o3 M
----------------------------------------# S0 \" ~( _+ I8 V/ W
whisper 我用的命令行,faster-whisper 我用的是python。5 u$ g1 J. J/ A. j3 c# X
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:: g) @5 q5 |: y7 s

$ m5 n- X3 H& b8 w* H: G----------------------------------------$ z& v/ Z! X7 |: c# ]3 m

( g/ w) d% H6 d+ P7 a/ e! Q4 w% Wfrom faster_whisper import WhisperModel
( _. }3 r/ D7 h6 U% x7 m* l" I
7 X' ^- x* S$ G: e! I3 @model_size = "small"9 o4 }8 l" X4 g% A& n

. h, z2 \: K& M( ~  fmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
  Q, L! X: _5 n' ?* ~# i1 ]: S; I4 E, }. L3 i  ^6 r/ t' l' C
segments, info = model.transcribe() ]3 h+ a" \4 J
    sourceFileName, 4 E: j2 K! L( [: C' H) I
    beam_size=5, ; {3 ?9 @. g/ @3 \/ a& O+ K
    language="en", ( f' }2 ]) x1 `- X8 e1 H
    task="transcribe",
8 X4 L" y6 |, {! N' M7 P    word_timestamps=True,
& s7 k# v/ G( F9 }% ~9 Y7 o    initial_prompt = "Hello, welcome to my lecture.")
2 @; u! q- x( B) |% T" t+ @
6 R9 N& P! \- M& [  I) m2 }  ?for segment in segments:
4 d2 B1 C7 l% P( ~! ^    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
3 j) E2 x8 v5 z5 R1 K+ q4 b  A5 G
' U, t# y. q, M6 c- l& V  A  ]5 Q/ q        for word in segment.words:7 L" k( I) T3 T- X; s2 U
                3 ~" i" }% G! K$ V
----------------------------------------
+ o* L$ D! m! d& N
$ w$ A! ~3 K# Z/ Q4 K$ L代码说明:
2 f7 q- _# ?4 j. F* q% R1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。# T3 w7 q; V- u2 h, P5 s
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
) W! x, J. i3 Y4 z2,segment 本身是很粗糙的,做字幕勉强能用。
; j- L' P& H  @$ z1 Q' k0 p7 j3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。) w8 M% V- ]& n# G9 C- D
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中7 |- G* s% H# Z, _9 A/ k
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。2 {; b6 m2 t$ R
5,model.transcribe 中参数说明:
, \, m5 d7 F7 y. p你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数; k! A+ o; M4 Y8 M4 J
其中
0 F4 ~, h* G9 i/ _) ~0 d    word_timestamps=True, ) Z8 \8 B5 q, e; a* z
保证了你能拿到 word,否则是拿不到的$ w, Y& K. d; J+ H
    initial_prompt = "Hello, welcome to my lecture.")! D$ w$ b$ l4 v1 X6 K, @. _4 B
保证能尽可能准确的断句 punctuation,但是不是决定性的。
9 J, F  @! q9 l: l3 A: ?其他参数可参考源文件:
5 l. {4 y( R5 s5 ghttps://github.com/guillaumekln/ ... isper/transcribe.py* @/ C4 l, t) l. B& N+ x  z$ F, H
152 def transcribe(
% w3 [& P% m7 W# _从源文件你可以看到是支持中文的句号断句的。* ^+ I8 I) ]5 X! G% w
0 s, P5 [6 P# `2 J: l
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。  [( w5 D+ Y; N4 ~
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
: ?4 k0 i5 i0 ^& U, `9 z8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。4 f9 I& Y' T6 n* W
+ `$ v' O7 ^# r6 ?+ O4 ^

0 v0 x2 r3 h, n, z) [4 O+ C% ]/ D8 y% a# J7 `

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-8-4 15:57 , Processed in 0.073326 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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