设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
% K$ |; q) j4 }8 S0 Q* E4 |
% Z: X( X4 A% ~4 O1 y3 J+ _' I借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。# v+ P% P  W# C- H) r5 P
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
" h2 i% g4 u7 v* N$ ]8 s----------------------------------------
5 a$ B/ d3 x- D显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
- I: Q& E9 b! C8 d* e! [+ s( U2 E: v在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
2 A& K  S5 u0 ~$ }( G----------------------------------------
6 Q0 R; b, }. ^  ^https://github.com/guillaumekln/faster-whisper$ g. R3 B8 R1 n$ n/ a4 r2 H) @
安装如下:9 w5 {  g  B  `! e9 Z$ Q
1, Windows 10* p6 m5 Q; q, \
2, Python 3.10.11
' V% U9 N) _7 r! K3 ]5 [3, CUDA 12.1
+ ]/ H# \; X$ ?5 D' z4, 在python 3 中安装
/ k& I, w+ R; `pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
' f9 D- ^  O$ r5 w' Q, w这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
% u- G3 W3 S/ s: g5 ^0 z, L1 M5,pip install -U openai-whisper& O7 ~' e5 s1 V# H* p8 V' `; j
这是向whisper 致敬,可以不装& g9 v/ ~2 k5 U) I
6,pip install faster-whisper
9 _: H5 R- J+ u! ~----------------------------------------
2 S  l! S1 j4 D: u5 kwhisper 我用的命令行,faster-whisper 我用的是python。
7 ]; R4 n% n+ F. g下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
9 b# S; }8 A) K, X
3 e& ~0 |# T% D! v4 [7 V: S----------------------------------------
; v9 `' o% ]" O* k. m4 O6 y4 |- \0 k  C1 K& F7 h
from faster_whisper import WhisperModel
8 ^3 G2 S9 h* R
' {# k! ~( e3 z1 Qmodel_size = "small"
$ D2 g: N" y" A9 Q9 j5 I0 G: I) E8 P7 [
model = WhisperModel(model_size, device="cuda", compute_type="int8")- n$ @$ [; n+ C, E9 l
. s& z* k% [$ W3 a$ p0 w, {+ [
segments, info = model.transcribe(  v! T/ M) r: ?. h6 B! {
    sourceFileName,
$ ^8 m! n" y: ~& T    beam_size=5, . E1 L) u$ V* Z# k/ b" j, K" z
    language="en", ' ]: k' f6 S* u: R6 j' h* W! P
    task="transcribe",
: K6 d% q+ S( ?) e& j5 c    word_timestamps=True, & I# i$ \' r; p7 K' ?
    initial_prompt = "Hello, welcome to my lecture.")8 ^, }! I6 {$ |1 ]* m+ m& H% b

3 F% }( z# R8 t$ c( P* I3 Ufor segment in segments:4 h/ O) V* n: \: S' M
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))6 y+ z  Z# J! V% ^8 B8 ]

# B/ R3 B3 y9 u, X5 E, t3 h        for word in segment.words:
: C1 l3 |8 ^: t; w3 @# {1 \* \                3 ?$ T2 f& O; y  H6 }7 P1 j6 C0 g) O; n3 J
----------------------------------------: e: G. v! Y5 Z3 @/ ~  n

8 y9 z1 T2 q; {* [0 U代码说明:; F0 J" v# J9 [4 G4 Z
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
& \% d( u8 U) c$ b) k& M但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。. ~+ X+ t- f1 z
2,segment 本身是很粗糙的,做字幕勉强能用。. }" Q# m- ?$ _. a4 U  M
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
3 _0 W5 C0 e5 r# d4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中& W) @% J; O# D+ l
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。9 P$ S; Y$ A9 q7 j4 H4 E
5,model.transcribe 中参数说明:
' X: X* }. D' l+ W5 K  b, w0 p9 p0 s你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
. ]0 B  q9 b- V* n! P, |1 z! B& w2 ~3 j其中: [0 Y9 ?$ A, a$ Y, d2 G( |  o+ P
    word_timestamps=True,
/ u9 f) p1 ~- M$ b保证了你能拿到 word,否则是拿不到的. a/ F. B# `; w
    initial_prompt = "Hello, welcome to my lecture.")
; b- y( C3 c- @6 ^: g( D0 h  c$ s, T保证能尽可能准确的断句 punctuation,但是不是决定性的。6 i6 ?* _  g' }
其他参数可参考源文件:
6 M) X; s" K2 k- M( Y: phttps://github.com/guillaumekln/ ... isper/transcribe.py2 |8 w, R% d6 N  ]# @
152 def transcribe(
- x! X2 c+ j  A& e/ E7 N从源文件你可以看到是支持中文的句号断句的。6 ?9 o8 f8 T! T4 v* K

1 M' c) ^. _3 f2 a9 e  }* B/ r6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
0 D0 i3 j: a( @- g# t" F7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
) L# Z3 G9 ]5 P% K# ~% t8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。( w7 Q4 H0 l: _6 B& s. G

/ y4 A8 A- Q' f, P4 r + i) @) Q# O! u
' w5 u$ o  r# r5 j4 S

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-20 05:45 , Processed in 0.063322 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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