设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
# C6 [! [/ }" F& H, R" j& U$ `% e
, @) }: K8 b% {( @借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
" F) R' ]4 L# C1 k: Y效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。6 O# n2 U5 z( A8 Z( r4 b+ U
----------------------------------------
$ }- e5 R5 m4 E4 _$ `9 G显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
9 @+ b$ g& n& _% W; l0 r4 H) S3 h在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
$ I" {* }: Z  f5 H; Q' H! m) ?----------------------------------------
3 x* j& j- P, l7 m3 fhttps://github.com/guillaumekln/faster-whisper
/ A& F, O& L: U, s; Y, F- h安装如下:7 b& ]. \& P) H( h$ L" `: j
1, Windows 10$ I5 N- T  I: q/ _0 |( t
2, Python 3.10.11
) D! B& [2 R3 k$ w5 K1 R# B3, CUDA 12.1, p$ u! Z8 w, f9 s6 x6 J
4, 在python 3 中安装1 [2 h* e) d4 g! o2 o" K; H: Z- b4 c
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1170 e1 Z) x7 |7 A1 e
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。' j3 h. l% g! l: \7 Y; b% i% c
5,pip install -U openai-whisper& @: v9 ~( s4 Y& n) Q7 K
这是向whisper 致敬,可以不装
6 Z5 ]7 m1 P9 `. J6,pip install faster-whisper
, L$ ?# l$ b, p* j/ U  M: {----------------------------------------
; H9 d5 a3 Y: ^  ~' R. y' x( @whisper 我用的命令行,faster-whisper 我用的是python。
" J# I  \) n9 Y4 e- `下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
1 S8 Y: l/ C" I% a2 g  h' o' x2 b+ {) h/ l7 S8 G% S
----------------------------------------
1 a; B1 v6 E; ^& b
5 _, v4 @5 p! [4 t! `from faster_whisper import WhisperModel( N( X6 [) G. E/ r3 Z
( D; ?1 {* k+ H2 i3 H8 I; w
model_size = "small"$ H( e% Y* Q7 |" ]( I8 T

( s3 r# W. `6 }# }model = WhisperModel(model_size, device="cuda", compute_type="int8")
  D; w( s& t& `5 d9 j
2 ]+ V0 K0 u7 fsegments, info = model.transcribe(
% w5 ^; W: k$ `    sourceFileName,
2 d7 P6 U7 z) I$ e+ s4 s: E    beam_size=5,
9 H# B% C7 ]4 C: k: d( G* B( z    language="en",
0 l  |6 z/ _. x! }/ j6 @+ ]# P    task="transcribe", ' o9 ]: ?) W! U
    word_timestamps=True,
4 i3 j# F  ~! Q/ {  [9 q    initial_prompt = "Hello, welcome to my lecture.")" @# i1 z! _0 D8 d0 V% P
  k  D5 X3 J! t! B3 F; A( H
for segment in segments:
/ \" |& X" h6 V0 c/ o  P& `% y8 n    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
4 E* ]8 C, Q1 o0 h* Y9 R4 F$ R/ Y" m- I/ t3 W% T
        for word in segment.words:( F8 ]: Q& @. k) ^0 \
               
+ N3 \% N. F& E9 W----------------------------------------$ A# Y& {. S! t- \# |; I

' k5 X+ x$ l2 I( Z' M2 c: M3 z代码说明:: K4 b+ X% w* _: d+ T; h
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。$ d. a. B' n! I7 Q
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
8 z- w+ b5 @) \* l! F" L9 ]6 X( T: z2,segment 本身是很粗糙的,做字幕勉强能用。
8 ^9 R3 x6 ^3 y4 j/ S3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。! o0 N3 t5 O# S9 [/ w
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
% R$ c, F$ \0 `比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。4 P( K1 B+ N5 K  o( W" H
5,model.transcribe 中参数说明:
- d6 E% N$ b# q) d你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
% Q1 |! T' a7 g% e, J3 R其中
% J* |) Y; d1 \/ I    word_timestamps=True,
% T. Z% e+ Y2 D' Z& H保证了你能拿到 word,否则是拿不到的5 ]# c/ C; @, p+ l5 Q* ^
    initial_prompt = "Hello, welcome to my lecture.")( k6 q& n, F8 {, x' }
保证能尽可能准确的断句 punctuation,但是不是决定性的。
7 [+ t( w+ \$ T4 ]2 b/ V; d2 Q其他参数可参考源文件:8 D: z/ K# X3 E- \8 a2 K, z
https://github.com/guillaumekln/ ... isper/transcribe.py9 J) d- Y* O/ r6 o  O# f( I
152 def transcribe(
2 L9 K+ X6 K# r+ Q( k3 {从源文件你可以看到是支持中文的句号断句的。- `/ y6 B1 C$ ~

4 f0 ^" E" U. r$ W' O0 f6 f6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
' ]4 x5 ~  N: Z6 M4 V7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
' w5 R5 a4 U+ v/ X$ v8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。* G6 b) ]2 k+ ^: ^% V) [' d" z
2 c5 {. |+ Q/ f8 d

; E2 G4 k2 f5 f' s
8 J. Y1 g0 v% X/ E" J

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-10-16 02:33 , Processed in 0.069187 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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