设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 7 i1 j6 J, f+ l; |

1 a3 K& u( y  L% [9 @+ T借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。: u1 m1 u0 s: \+ \$ h4 g3 w
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
+ a6 w' t8 O% }, F2 e, U----------------------------------------. o6 ~) e5 k2 [; p8 E1 I
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。( d% g$ e2 L& H1 l* F6 {9 J& c4 I
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。( {' k4 F( W' @9 S3 D
----------------------------------------7 q  K1 I7 N6 N9 k2 ]6 A
https://github.com/guillaumekln/faster-whisper
$ G; j2 V% n- O" P安装如下:
7 I1 A! v2 S. i% O# V; j1, Windows 10
6 _) F+ r( j& o* @! Y  F9 c) o9 _; h5 ~2, Python 3.10.11/ t" H4 z# K3 P
3, CUDA 12.13 r0 Z# h( P! \3 c5 i) A& [
4, 在python 3 中安装; Q# ~  [" P# G6 b/ i- R% a! ^" c
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
% u. Q2 ^3 o% V  }/ G5 ?2 `这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。1 i9 J$ Z. o- C, W, f5 M
5,pip install -U openai-whisper
! o4 t! K* `; g: x这是向whisper 致敬,可以不装8 `- N" P1 o% q1 c( |. @
6,pip install faster-whisper
! H& _3 V1 c9 c6 W7 t5 y----------------------------------------
  A9 p$ D" b% H) \. }whisper 我用的命令行,faster-whisper 我用的是python。
0 \! C3 M* s) J; w5 \% E& T3 y6 ?下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:; H, M+ R% {$ `( d- u! d! e" r
- M- ^5 f) d, `( S* c
----------------------------------------  x; z* D  C* b
* K5 K1 [1 I1 q5 b( s- v9 V
from faster_whisper import WhisperModel0 P8 W4 }2 Z4 Z2 K

$ A; ~$ H2 @2 l( J' ~6 V; H5 X+ pmodel_size = "small"
8 O+ Y( @. h1 u3 Z$ O: z% ~2 o7 e5 e# T/ H$ e7 Q" u
model = WhisperModel(model_size, device="cuda", compute_type="int8")& q0 |- _( x  T6 @

5 s6 y; M% O- c2 x: x1 ^segments, info = model.transcribe(8 d8 p, E8 k0 U6 U
    sourceFileName, % }& m& m7 t$ A5 k( ?% X4 [* g
    beam_size=5, # s- f: Q: ]8 z$ `
    language="en", - A; b5 C3 ?7 }+ O: R6 c# U- X
    task="transcribe", ' G. m- q' e7 y+ v7 {& K5 Y4 @, G
    word_timestamps=True,
5 J9 e( Y( J# f    initial_prompt = "Hello, welcome to my lecture."): w, I  u, K. n* c

, l8 ^3 I; [3 B: O0 T  H8 Jfor segment in segments:
* d6 y$ D9 Y( P- k    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
. j& h  Y3 Y- h: w" R: P5 K# B" X; p$ S# W& f" j5 D  o
        for word in segment.words:& E$ x: C0 z$ Q& G( U
               
# b2 B% I$ H8 E+ {) m) D! a----------------------------------------7 |: x3 K3 B- V% d. t+ _# t4 Y

0 t  H6 x3 g9 R; Z- Q$ g代码说明:& q" L4 w; K* m4 I9 a+ V  i
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
8 r4 w9 ?' e$ R& ~. P! ^. q. j但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
2 n# W( h+ k# ]) y: I2,segment 本身是很粗糙的,做字幕勉强能用。
) W" \4 ~% J# D/ d& Z3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
# j: v" Y! q5 j0 r4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
, r; J0 I+ F7 I4 e( K( j- [比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。% I1 t. ?" {# Z* f: K+ T
5,model.transcribe 中参数说明:0 \! N2 o# X9 o' V+ ]( o
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数& n- j# W7 T( H$ P
其中
; o7 L' S' V4 A% \" s/ ~+ y    word_timestamps=True, * p$ b3 I: Z" D) P9 \3 S" b( K
保证了你能拿到 word,否则是拿不到的
% o; C  E; _) f& a, ?  M9 T, o( h    initial_prompt = "Hello, welcome to my lecture.")
8 R, `7 L  r0 B: q保证能尽可能准确的断句 punctuation,但是不是决定性的。/ U/ i. C- X) L# t0 Z
其他参数可参考源文件:
6 v  k( [% {  C& [! x+ c. \/ U- |https://github.com/guillaumekln/ ... isper/transcribe.py
( {4 m8 p; w3 N- M  }% A152 def transcribe(  e: a8 N/ Y' A5 ]* m# I0 K! p  D
从源文件你可以看到是支持中文的句号断句的。2 Z! n' a. [* L
1 z! }% f2 {8 {) V8 v( q: S
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。  _" Z& b4 _) ]2 W) ]$ W, Q$ o8 g
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
: j4 Z& \/ `2 x. E+ \. m- @$ c5 Z8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
3 ?1 ^& {2 @7 B$ e" z2 C! e; D& `* q; F2 J" {
# n! [' ?5 f4 ^: v5 N: z6 B" P

% l- f; o: y! @. e/ H' u) L+ D

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-5-26 11:12 , Processed in 0.056887 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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