设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
) {5 i9 U( ^+ m  m( j/ N$ U
, f& o/ @0 P$ M0 ]" G: A. @( _$ Z6 ~借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
$ ]& I9 m: L; {9 r/ p* h! e效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
" o  A2 t- `6 k2 X/ L5 ~----------------------------------------
$ r& f. n3 F8 |显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
/ a" y6 B# ^% y6 [/ S在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。8 m4 e  c" q8 A: F( R5 A
----------------------------------------
6 d  K4 w$ s7 g6 x* C& Bhttps://github.com/guillaumekln/faster-whisper
5 M7 \7 k, ?0 ?5 j安装如下:
7 A8 @- u" v8 {4 g+ o6 V1, Windows 10. W1 M( j+ O4 i; O" X
2, Python 3.10.11$ f3 `" j  d4 J& O& F4 k
3, CUDA 12.12 r  `& J/ E+ j% Y, S- H
4, 在python 3 中安装
! `9 p! j* j; J, B7 gpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1171 o2 H3 E7 m6 m
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
: v5 M1 g- ]  T. x. E6 b5,pip install -U openai-whisper
/ v/ \0 t- n4 e$ P: ?这是向whisper 致敬,可以不装  i; p) b' r+ _: X6 K' [5 M
6,pip install faster-whisper/ Y4 d1 r+ \% e% N, F
----------------------------------------
4 A2 |3 {1 h) _# V5 I! kwhisper 我用的命令行,faster-whisper 我用的是python。
: [& o" M8 n! J8 p+ H$ W下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
7 |8 u7 j( O6 t, A. `- V6 V' z/ S# ]0 I$ E. f1 ]% I
----------------------------------------
" I. G1 {# S2 g/ z' `* t% v% H  W& S; T9 V/ {  b
from faster_whisper import WhisperModel% n3 X% g3 k0 |
2 G  u# u' j/ P, g
model_size = "small". Q6 \- f: F: ~* X

/ b/ ?% `' r- z& }model = WhisperModel(model_size, device="cuda", compute_type="int8")' ?) s5 m* W5 j; N* e

* d* E. `6 Q4 e) n8 G7 A1 L. D9 E% Fsegments, info = model.transcribe(1 Z$ a+ F- n7 x: t
    sourceFileName,
2 U3 j6 j' j( G4 E( M6 p" _  b1 k5 q    beam_size=5, . G9 M: {  L: h2 y
    language="en",
% A* V% f+ c( G: U# T    task="transcribe", " x& [) R5 t' j6 }% j$ E7 o
    word_timestamps=True, $ g8 m& ]9 d; {! o' }
    initial_prompt = "Hello, welcome to my lecture.")
4 C+ y' x" t+ l6 T" G5 O' J
5 `* e9 Q, s) f3 S9 Bfor segment in segments:
8 h# l8 }- W, d' r+ T    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
( M$ N* X$ S, P& z  W% ]/ i. i& `( u% a, U
        for word in segment.words:
! G+ C2 ^. g* O5 B! Z/ }- ^                ( j) |9 F: k$ W' J: e
----------------------------------------* N; q$ k& k6 ~3 v$ l
+ v; S/ L! _$ j6 B
代码说明:
6 @- Q* {! k/ |! x: w1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
, ~4 Z/ ~* }. o但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。# s. h; Q! J: q
2,segment 本身是很粗糙的,做字幕勉强能用。5 U+ }! y8 q( U  {4 f4 D
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。- c3 F" j4 {  I* T2 o/ e: h' n2 i8 f  E* f% q
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
: p3 i4 H8 ?8 [: I2 D& O2 q$ k: X比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
) ?8 _- f* T! W1 E5,model.transcribe 中参数说明:- b6 S0 t4 ^- I" t( u  h
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
* [( v6 \+ ^: |" q1 ]' K5 K% N其中; D, |5 ~' h7 G# ?5 |- [4 `
    word_timestamps=True,
, S' J) ]9 y* A% l$ M保证了你能拿到 word,否则是拿不到的8 {- S# K; r+ T
    initial_prompt = "Hello, welcome to my lecture.")
5 b' `6 Z  l* @  V8 L5 d保证能尽可能准确的断句 punctuation,但是不是决定性的。
( O5 j' u% Q/ Y+ ^8 Z  V- R8 Q0 e其他参数可参考源文件:
' |% T. R- u& e% ^/ o; Dhttps://github.com/guillaumekln/ ... isper/transcribe.py
& F3 a  U9 {4 ]/ h: t9 A152 def transcribe(* q0 A1 f8 |6 K8 @  V
从源文件你可以看到是支持中文的句号断句的。, d8 x1 v1 S" N4 A6 L& h5 L/ K

! d' v6 u: I2 Z% O6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
. b. F4 U+ m; ~# f7 Q) a7 ~7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。: D+ F- b2 D1 h% P  f  l% e- z7 l0 d
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。2 T2 o1 P* G1 t6 ?
5 }7 E( a" F( f, g0 ?0 i. Y' ?

/ d6 X- Y5 \0 T) i# o& q* T$ V7 m0 h- Q6 ~9 t+ N

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-2-3 00:29 , Processed in 0.052414 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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