设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 9 G6 M8 e, @3 ]% [6 j

: f5 I- H# y* T7 C借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。) O( n) i! G6 p( }5 A# x+ k! {
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
: {; H7 b" o5 Y" ~0 S6 q/ L- X----------------------------------------' t1 K: |( C; U6 U" u; A3 e
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
9 z9 ~' I  e' T& _$ x- H! w2 R! t在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。7 i* u- N6 s" P# f( c
----------------------------------------
0 h% ^- O3 Q1 {https://github.com/guillaumekln/faster-whisper+ H0 w4 X' C% k" Q( N, o
安装如下:$ L+ X* K' T! S+ E% _; V
1, Windows 101 d7 L0 f& T. j* d! v9 Z
2, Python 3.10.11
) T: u# o$ S# V& M7 l3, CUDA 12.1
8 w% n3 i1 w8 X) o* r4, 在python 3 中安装8 d1 D5 O1 L) H4 J! z8 {
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
5 _  P9 R% G( c) J这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
% d3 E' T# U! F, }5,pip install -U openai-whisper/ b0 v; e) I7 H. H: w: |
这是向whisper 致敬,可以不装
3 r) l. ]/ Y' J6,pip install faster-whisper
6 r/ q8 Z" G% ]8 e----------------------------------------( w! ~3 L- |, l
whisper 我用的命令行,faster-whisper 我用的是python。
% j% D. Y3 t4 q& i: b" `下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:. a- G0 B# v4 `

' r. C( E1 P0 M0 {: Y----------------------------------------
: T, h3 H/ Y; B% k7 q" l5 z) l% c" D7 ?
from faster_whisper import WhisperModel
6 Y8 k4 z1 k3 q8 p) ?" [1 Q
8 w2 V8 M3 z+ h3 Kmodel_size = "small"
6 J" ]5 x4 Z' F, O6 D% l) B! E) R. g3 I6 O+ n. h# ~
model = WhisperModel(model_size, device="cuda", compute_type="int8")
- i: P* l. ^( s6 d4 x$ q  I8 F& x" a, t
0 c8 \6 t( i0 A/ s6 b" p6 gsegments, info = model.transcribe(
6 X% A  M1 o9 ]! y" O    sourceFileName,
8 L7 x  S0 H- T6 \% u2 b7 j2 o9 a    beam_size=5, , i, {9 o+ X, f( W
    language="en",
0 c3 C. X8 p* Y: V& J( z    task="transcribe",   f3 p# S+ m& M( G" l
    word_timestamps=True, 4 W9 i* P& N. ~* Y) _. R
    initial_prompt = "Hello, welcome to my lecture.")/ [, S) a! {. m+ O' q4 J' ^- A
+ U1 Q1 E% W2 t" V) ?
for segment in segments:
: v9 y2 |$ j+ Z0 b6 a$ {    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
9 ^9 f3 E" P. Z8 z; W
$ F) I  g+ H% }; q        for word in segment.words:, U* B% T7 B% [# s
               
2 H8 `0 @) I$ s$ v) ~6 e" z----------------------------------------
2 l; ?0 S, p* y2 _, L2 z% h4 M; F
代码说明:
/ _+ ]% g1 h% A2 b1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。" [0 y+ ]: |" J
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。* [. d$ j! |% F; {1 L
2,segment 本身是很粗糙的,做字幕勉强能用。" Q7 i) x, X! y: t0 W( s) Q, S
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。( h1 b# l9 q& g( I# q
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中& M$ m8 @0 }' A; i9 {
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。9 K8 o. c8 ^9 Y2 S& T) w8 t
5,model.transcribe 中参数说明:
" f. f) K4 t9 i! a你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
5 b, n3 H5 B5 e" A其中
& j- Z- T2 W# n0 D+ B7 b    word_timestamps=True,
+ D, M! ~0 I+ M保证了你能拿到 word,否则是拿不到的
$ u$ b: \, Y9 o4 ]) @( N    initial_prompt = "Hello, welcome to my lecture.")# w! X0 o, W, k& ?3 _' f8 Y
保证能尽可能准确的断句 punctuation,但是不是决定性的。4 g) d& q4 K3 V! g1 I' [
其他参数可参考源文件:
* f8 `5 M3 X4 K$ _3 p, f6 B% E8 Khttps://github.com/guillaumekln/ ... isper/transcribe.py
% a- ]) y2 U: f2 z1 P152 def transcribe(
2 h$ r" O* B. P8 p8 C: L从源文件你可以看到是支持中文的句号断句的。. X( l( v8 j9 |7 I5 g' x- T' }
0 ~! q& d, Y* t# B9 t/ g
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
* ~7 x/ T' H/ G# i7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
$ P" W% @! j1 Q2 I) a5 m& w8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。$ F$ F! o' S: [3 v' t& s7 x

8 w9 M" G$ b5 b$ |/ D: Z1 v ! ^1 K9 q, W- v# `( l) f( _
/ f7 m; d& ^/ X1 |' J

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2024-9-28 06:31 , Processed in 0.034814 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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