设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 # @/ X* s9 Q/ k( B8 R3 X' R- T
% \+ K: }& w$ F
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。5 S2 c: P, n5 Z$ i% l9 F7 d
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
% V5 J9 m4 d1 d' n9 q$ {7 x+ T1 p  F6 \----------------------------------------- ?4 Y+ G2 }5 N. c( D3 b- j2 N
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。; G1 r% J+ x+ E) g
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。) v4 Q# [+ H; M6 e2 B
----------------------------------------
  W! |! s* ?) N& y1 Hhttps://github.com/guillaumekln/faster-whisper& y  U  w9 z8 b( q9 G
安装如下:
# b) E7 m; ~9 q, _  l: z1, Windows 10
2 H& x# a' \/ S/ r- f0 L2, Python 3.10.11
- P6 j7 M+ Y2 a/ L5 N3, CUDA 12.13 g: o$ [& I% x
4, 在python 3 中安装8 h0 M, L! i) [# L
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
& t) L" M8 p" s* T这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
1 M5 ]. G( {( H2 \: W9 q5,pip install -U openai-whisper
" y5 M3 V. ]# K% p! K9 r+ W这是向whisper 致敬,可以不装( L4 h& l% s) ~* z; o! z4 }
6,pip install faster-whisper0 I* P1 x) z, C" w5 {$ x' ?
----------------------------------------  V( Z$ ~- S- V: P6 e6 w
whisper 我用的命令行,faster-whisper 我用的是python。+ o7 ?$ x* a* O% J! r, a
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:  C$ K; _* X' z! g: s" u
/ n8 m/ @8 N4 M$ y2 p$ I3 e
----------------------------------------
) N9 k: _+ M9 r/ k+ f8 O2 \& \  n. ]4 ]  x/ j: B
from faster_whisper import WhisperModel
' L% m- Y0 `+ W* T: _  h$ f  E8 C( K! z! i- c3 A. I
model_size = "small"
6 {& `+ @2 o4 {$ |( ]3 [( H3 a! m6 \$ T+ `
model = WhisperModel(model_size, device="cuda", compute_type="int8")7 C. _. j; \$ g4 A. g

% B3 Q8 u) k( w: C# N( wsegments, info = model.transcribe(2 M! j6 l4 S' v
    sourceFileName,
2 K8 ^8 l4 O% c0 @5 B    beam_size=5,   L1 Z- V; W/ C# O+ h9 W. k
    language="en",
) W1 d8 r/ {3 ~) A    task="transcribe", 9 T* }' N9 V& R) @5 J
    word_timestamps=True,
- @, r# _. S6 D3 U. [. Z    initial_prompt = "Hello, welcome to my lecture.")7 E, c" j* u1 M* f& ]3 ]5 W

- t. y1 p0 i5 C: i' d$ |4 E1 E' b  \' D' Bfor segment in segments:0 @  t8 \+ U% X9 u% d
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
4 u; G4 H: Q5 N9 G- V! p% t
/ I8 c/ }3 Y. x1 z3 G( t+ `* e        for word in segment.words:
7 _2 O/ o$ n8 E5 I* [7 x               
5 y' v5 _/ ?' [( f' [: v, p----------------------------------------
1 I: W4 M8 t# W) Q  K6 u5 p6 n% W
代码说明:
/ Q9 R1 @  a9 t: }+ \: c: I1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
* G, L  N2 \9 K7 r0 m但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。$ B7 E4 ]1 \4 _1 I5 O' A1 E
2,segment 本身是很粗糙的,做字幕勉强能用。7 u3 N) `. d+ x% x! |: ~  w1 S6 x& S
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。2 i. C+ g* A: {3 |
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中0 I) |/ ?5 r( g  K1 s9 I0 i* q
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。, B" L5 f7 T) ?! @: }& Z% |
5,model.transcribe 中参数说明:
  \+ G$ l7 A: X/ e: u你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
% i8 Y5 p7 V6 f, q6 ~8 x/ k* |其中7 l( w6 b. I) }3 T
    word_timestamps=True,   r8 s3 o0 [$ q2 i& A
保证了你能拿到 word,否则是拿不到的
' w0 `; o; q& p1 e% H( w    initial_prompt = "Hello, welcome to my lecture.")
6 {% x; I" J4 l) Q$ S& n保证能尽可能准确的断句 punctuation,但是不是决定性的。& G8 q8 y& r9 q. K, f& [
其他参数可参考源文件:
0 Z& [! F$ L+ n/ H6 n  phttps://github.com/guillaumekln/ ... isper/transcribe.py
, e4 h' W3 }0 @3 T) w/ B0 f; k152 def transcribe(7 e. F5 s3 O0 D, A9 h
从源文件你可以看到是支持中文的句号断句的。8 u# D- K, V5 ?# V" r% W- j
& x' K4 ?" I, O' ?' K+ a
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。& G8 f; d3 N; A! R- y
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。$ H3 l0 v% O& L$ s
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
$ s- ]& D$ S. i& ^" g! V8 H7 a. p: T& ~! x; P# ~

4 C7 o8 O0 H  n. k; ^- Q8 d1 ~. B  h

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-10 11:19 , Processed in 0.027398 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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