设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 2 Q" u4 o0 d' Q8 a  N

& y% R3 d- @5 ^* ]- V: M8 |借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
& V% ]/ l' w" x* g- R效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。1 _3 L7 ]1 c( Q$ n* V  x) H+ X
----------------------------------------8 ^0 y) c' u  o
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。( Y5 R0 R2 h7 @
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
; o8 r2 r: q# j5 I+ Y/ C( j----------------------------------------
. k/ v8 R- G" a  ohttps://github.com/guillaumekln/faster-whisper7 J3 J! I$ W6 o8 g) H
安装如下:$ N" S% r) w; w# v6 X& Z6 }2 s
1, Windows 10
# k9 d0 d+ W# G- N: y# Z: T# ?2, Python 3.10.11& T4 W- d9 c: Y- F: Y' X
3, CUDA 12.1
$ B) d; A% M6 O+ `' z% a4, 在python 3 中安装
1 N: P# s* h4 Xpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
/ e: L+ ]7 @* S3 k5 _5 S& |这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
& _* ?7 C) T! e* X5,pip install -U openai-whisper1 Q3 D, U0 ]# [0 [
这是向whisper 致敬,可以不装
8 Y1 o% o$ X: W( T# x; ~4 J- f$ R6,pip install faster-whisper
: K0 H3 K! \# ?0 }) G- a----------------------------------------' f5 O& s9 [& M9 f8 p* o% x4 b4 y5 b
whisper 我用的命令行,faster-whisper 我用的是python。7 }$ t$ F6 Q4 i5 x3 w7 B
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
3 w: M1 c4 y$ ~& R" l% {$ ?" ^7 ?1 L  k6 Q% X+ I/ {; V$ K
----------------------------------------7 P; d# T( s2 r9 i3 b
# ^7 s8 j: W/ n
from faster_whisper import WhisperModel' |1 f2 v/ `# @8 f" I/ o
) G, N7 I) \# {% z+ h
model_size = "small"
0 L) W' ^" y4 D
) F3 b/ }8 X6 j- |model = WhisperModel(model_size, device="cuda", compute_type="int8")
0 `, F; \7 z/ P0 A
$ c9 }& C, W$ D7 _6 fsegments, info = model.transcribe(" \# o& B/ h. \
    sourceFileName,
) P! T8 b7 v3 G5 q$ w3 M+ f9 Q    beam_size=5,
9 S2 R4 v( y0 U$ p# Z! Z    language="en",
. Y! ?  I2 ]! r  C6 C2 k    task="transcribe", ' z1 ]8 E4 t$ [8 v9 L  ~
    word_timestamps=True,
0 l+ \# M% y8 ^  z( i6 e    initial_prompt = "Hello, welcome to my lecture."). M2 |* w" t! H& ~! q

# @; I2 ~3 |0 ofor segment in segments:
- I  _5 Y  z, }  }    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))( Q  i" d8 u& u( h+ D3 ^
9 o# R( x6 K- R. p8 ^  U2 v
        for word in segment.words:
. k1 [9 A, ~# Y& K                " D- \% H5 w1 ~5 R5 O' d  e
----------------------------------------7 I" a+ _# c2 C8 ~; M

' \$ s5 P9 g' X6 A代码说明:
# k; n2 \- }4 G1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
# h1 _: q9 c% X- ~# E- P* Q" l但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。/ Q1 v2 I$ X) x- w2 s1 @/ ^
2,segment 本身是很粗糙的,做字幕勉强能用。
' a/ z6 b; e7 c2 x: s' n3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
+ l  L# B2 o- ?/ f$ S! P3 ]4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
- E7 d: P& a( e4 o8 W" o比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。( i+ {/ f* O( C* p2 |) |* I5 G
5,model.transcribe 中参数说明:( s) `2 r/ b5 [0 o+ R) ^6 p
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
! \2 J" Q+ [% g& I4 d& r其中6 W# o- t9 A8 {3 d! ~7 o' v
    word_timestamps=True,
1 U. p/ T& r8 d2 t- e& ^! @保证了你能拿到 word,否则是拿不到的
- H* Y6 }' m1 S/ u) N2 v    initial_prompt = "Hello, welcome to my lecture.")
& F) z9 F' W5 Q& b保证能尽可能准确的断句 punctuation,但是不是决定性的。( [$ r6 Y/ w* E0 R( U9 b# b
其他参数可参考源文件:
+ X# `4 s9 |' M. c. [0 [# U+ Hhttps://github.com/guillaumekln/ ... isper/transcribe.py; R5 O7 ]0 \2 w& I% b
152 def transcribe(
* E* h' F& ?9 Q3 d  w% t从源文件你可以看到是支持中文的句号断句的。
* x1 p3 c, v$ v8 q5 T& A+ {, E/ J9 N- b# H* d3 i
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。, u( ]' J' [& C, w
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
: `1 t  N: N% d  f& r' @  f( E8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。0 z/ {- G; @" J

9 k! `( j0 ^$ K( @: r) o
; a! _) S8 A* U' s: O' ?  k  v! S8 C: g4 m, z4 U% c' l

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-9-16 18:35 , Processed in 0.057521 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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