设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
+ N" l1 x. A, \) Y( }# L+ V  @! g
4 P( U6 U* e& C( z! y' `借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。+ \8 k/ b. j7 J% O
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。0 N) B/ i& H8 A" y+ V
----------------------------------------
( o+ m+ X8 U4 h显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。* a+ \, |3 _6 M/ v; W
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
, W, j& R- ^  o9 @9 e; F7 \----------------------------------------
1 G5 Y, @3 U3 x( {* ~! Jhttps://github.com/guillaumekln/faster-whisper
) ]' W2 E* V7 |" m  [0 q" s3 K安装如下:" p5 `( g+ n& L/ ~% [
1, Windows 10
* _2 Q# P1 a& F) b! r5 i+ G2, Python 3.10.11
% O* Y6 K7 G" K  X' X7 w7 P. j: E5 X3, CUDA 12.1
4 Z/ h; W' u3 y2 a" l: r. c8 a4, 在python 3 中安装
6 R& e9 l2 w1 Dpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
0 O3 |$ b; ~6 B. y0 \; W! G这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
" V2 `3 d! G8 w' R. q5,pip install -U openai-whisper
: W/ J8 Z! k1 K/ A/ g; k这是向whisper 致敬,可以不装
6 i$ Y' y$ e# @) M3 G4 G* W1 e6,pip install faster-whisper9 `% T! }; H8 h$ P* j
----------------------------------------
: U# H9 R( @. Ywhisper 我用的命令行,faster-whisper 我用的是python。
7 g! P( S* U' d! Q& y* b+ g! G+ J( r' z/ q下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
. A+ m! l  D/ {3 n% M$ m8 `
! [& p/ L% j" Z0 Y/ v% y/ X----------------------------------------2 i' a7 _. N7 \& _- p2 `

0 J" v( j/ k' Q" ffrom faster_whisper import WhisperModel
8 E% i  [% i! p) ]! D  ~, h0 y$ A: v/ K* @0 S
model_size = "small"
1 J1 @- U8 E6 ~6 p* q% D! p, V& h2 {) W* l$ j5 I
model = WhisperModel(model_size, device="cuda", compute_type="int8"): U; a7 D+ J4 s5 r8 R

+ I$ g7 }) I* v- N& v2 \' Q8 Zsegments, info = model.transcribe(
1 s9 D! `+ s, m( I2 R% A0 u0 r/ g    sourceFileName, 4 e. k- z7 `% R& t" X/ j
    beam_size=5,
) z+ D# H/ Z/ F    language="en",
, }; O& v1 s, g9 Z    task="transcribe", % B5 C8 o$ C  G, ~- i; t0 Z7 y1 U" O
    word_timestamps=True, % y% U( v/ C) _8 x
    initial_prompt = "Hello, welcome to my lecture.")
; y1 }+ p4 M$ x6 b" h, E' p" X7 r
for segment in segments:; f0 x- p4 W9 L2 {- r
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)), H$ B3 I; A9 t/ Z( `6 E% k

6 h* x: D2 w8 q# A8 p$ z        for word in segment.words:
  x+ s; [- d! p. M# N               
4 J& w  I, n* n" q: {. J: I----------------------------------------& m- ]0 V9 W+ ^% o; J/ j
/ a! r) s0 o8 ^5 d0 j
代码说明:
0 c( ]' F: f' P$ Z* ^( n1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
4 ?* w2 {& ^; q& d1 u3 W4 G3 F但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
/ R$ \9 Z  I+ F0 }' F9 y2,segment 本身是很粗糙的,做字幕勉强能用。
* r7 J5 ^" {/ ?; U2 n, p4 l3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
6 C# ?1 Z9 E* y6 Z7 ]2 ~4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中7 l5 ~  h8 N! W& R: J/ d
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。  B: l  _% ^; `9 u! [
5,model.transcribe 中参数说明:4 Q6 Q+ `" r. f7 |1 Q7 V
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
" I) S/ b1 c% r# t1 Y4 g1 @$ L其中0 A9 ]& {: o2 g. f
    word_timestamps=True, 0 v3 n8 z( C" d+ O6 t' i8 z
保证了你能拿到 word,否则是拿不到的
; N1 L3 b2 D2 v. |$ {- |    initial_prompt = "Hello, welcome to my lecture.")6 u( ?& y/ V- i8 G( m+ B
保证能尽可能准确的断句 punctuation,但是不是决定性的。, Y2 y- q7 B" b( U) ~1 }
其他参数可参考源文件:' y! V. R% w. s; m, @
https://github.com/guillaumekln/ ... isper/transcribe.py9 R/ O& N# X! Y
152 def transcribe() N' G9 e7 R  P1 q" X# c+ s
从源文件你可以看到是支持中文的句号断句的。
4 U5 N% Q3 U# ?, [  J; @/ j  Q8 N) [1 r
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。' }+ o. B8 a8 A) u* Z
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
2 h6 K4 }' g6 }8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。4 A8 k6 r% J, S. }
4 F3 t7 x* O5 ~" Y6 F2 Y) J- N

2 E% N3 F) A7 \  {: l  E! M) ^, ~6 u: O' S, w* _

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-13 22:45 , Processed in 0.030060 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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