设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
; o" m  n6 k" @" b1 H8 z- T
( c/ `# C0 ]3 Q2 T! s借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
' F( s  A; d% I" K6 w/ M效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。* M( o$ Q7 q$ B& P2 v
----------------------------------------
3 V1 o8 z, l" t- G8 d+ q5 k显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
+ D4 M/ n# x2 A: L: l, Y在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
. f; \' W# E5 x  ~----------------------------------------
9 \2 R! ?$ W) D$ ^4 ?0 Ehttps://github.com/guillaumekln/faster-whisper* f+ `. g: Y* o1 R8 C
安装如下:' v5 f1 e. \5 q) c$ l5 H
1, Windows 10# w" {* T' \8 k4 z- g" H  J
2, Python 3.10.11
6 P. F# p: L* l7 R5 }" n3, CUDA 12.1) {* @7 x" ~% d+ y# e6 y8 m! ^
4, 在python 3 中安装5 \" U3 y8 |0 t* {, E7 b
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117: t, O* z/ J% t% f$ q
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。1 @; }: K" {7 x# |. z9 o9 t
5,pip install -U openai-whisper
4 F/ f1 x% a' c这是向whisper 致敬,可以不装
1 @7 Z* P# L1 X% a  r6,pip install faster-whisper
  w/ }5 C& O  N9 E% l- j$ A. ^6 w----------------------------------------
" u' a  w7 u3 j0 c5 c* Y, `: Ywhisper 我用的命令行,faster-whisper 我用的是python。
/ }/ l3 Q# W: L0 X, m下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
+ \- f7 _$ P3 V. i* w1 z4 k2 L
- }! y2 C" U8 K! i7 V: V----------------------------------------
7 f9 P3 _- @! N* _5 [: d5 _5 K, q! S" n- x/ |  T( S; {! R
from faster_whisper import WhisperModel; @0 g( B! i! l' P8 P  A% w" Z3 a

  X' m- U1 q( W$ Umodel_size = "small"% q* [+ C: W+ s# @# X

3 E* ~& ^  s. V2 g3 G* lmodel = WhisperModel(model_size, device="cuda", compute_type="int8"): Q  K0 I* J. [. `

9 D! l0 i/ Y" h  Usegments, info = model.transcribe(
1 g. g2 `) i9 c; |. {$ z4 O( w    sourceFileName, : V% G" A7 h; @: P7 f
    beam_size=5, - t- T0 h5 r  _% n& x
    language="en",
2 j. Z( T5 e$ }6 E& a    task="transcribe",
: d7 ]: t5 J) T- y' k! {    word_timestamps=True, ' D5 h, I. P, M" t6 E
    initial_prompt = "Hello, welcome to my lecture.")3 V" v9 d- v' E

3 N5 s1 P0 T. Zfor segment in segments:
2 F3 i8 Y; v% `+ O- G    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
; O3 a, ^+ U. Y$ l; B+ S! o* X5 Z2 p. M  M0 f5 I6 o# y" W
        for word in segment.words:
+ }! d/ R& }# J8 z% F               
6 X: L! Q; p; F----------------------------------------
+ r* J" G" W0 w; ?) e6 \5 {5 O' n; a! l! h
代码说明:5 z$ |) S. f  n: ~1 p
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
8 k9 S; i+ W& x7 g4 ]* j$ z- E4 e但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。2 V6 l  l; e  M! O& B0 _1 u" J. @: t6 P( s
2,segment 本身是很粗糙的,做字幕勉强能用。" Q+ g( K" r) K; D' g1 G
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。/ x9 s  I3 ?: O7 H0 _
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中! a# K% I" y* S) n, O: i5 V
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
+ \2 o1 j% w! P5 T$ L4 p% ?5,model.transcribe 中参数说明:
/ K5 X1 m3 _. Z' U! {; {) k你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
1 {6 o2 E' r, j7 K% B- o' I6 I2 K其中% `& L3 x+ k8 z
    word_timestamps=True, ! \/ j* Y0 a9 C5 {3 v& B4 {; {
保证了你能拿到 word,否则是拿不到的3 s7 s2 ]; `4 x6 p7 x8 ]/ T
    initial_prompt = "Hello, welcome to my lecture.")
1 `/ w# X  [4 j) v: {; T保证能尽可能准确的断句 punctuation,但是不是决定性的。
5 C7 u& p4 i. ^( x( w) @: a, s其他参数可参考源文件:. r$ \# q* O7 L7 b" q' {1 F( b1 g
https://github.com/guillaumekln/ ... isper/transcribe.py5 x$ W# N0 s5 j  p# o
152 def transcribe(
6 K3 a# ^# N- G0 D* R从源文件你可以看到是支持中文的句号断句的。" c9 a" }# T$ `0 x. G! I. o7 {" ?

7 e, E0 O% L* ~6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
! }# o6 V" H' F/ W3 M7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。. E& o1 d  S9 G% R
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。& m2 O$ b  Q6 F1 s0 H) e3 s5 c: M

2 d3 o; `' u; I: @1 v: \9 Y$ W
1 D. D! h7 J" M$ d: S" J
# G) [7 i, @4 ]2 B5 z$ h) Z

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-12-21 00:52 , Processed in 0.027555 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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