设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 8 j; u8 p0 C9 o& h3 d# r2 E9 \8 b

# b" w; I( V# `& |, w: h借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
3 y4 D: L+ r3 `- V+ Y# x+ M效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
( V' v5 v) P1 `/ J----------------------------------------6 F9 H) C  v& |: H/ {, i
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
( h1 f4 Q  D. n在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
5 o# i7 S7 g% {0 Q  c----------------------------------------4 D. }5 b  ?/ r
https://github.com/guillaumekln/faster-whisper
$ e/ o4 F0 ^/ `9 U2 |4 R; o8 V" b6 |安装如下:  J) r' d6 m, L& M8 i4 l, h' S1 Z) x
1, Windows 10% o$ W, b0 t/ K2 k
2, Python 3.10.11" x: e5 c% y, L) O- n- h
3, CUDA 12.1
1 k9 ^7 e# \5 m: v- y/ P7 Z& x4, 在python 3 中安装0 F! j) e* N6 @/ l  w1 l8 B7 f7 z
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117% S7 h+ p9 A* {9 g# I( u0 ]
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。( i5 p# Z5 J  B
5,pip install -U openai-whisper
) r0 Z6 |9 v* v+ T, z$ c这是向whisper 致敬,可以不装; i' T, T3 v/ {, j$ M& C0 F4 Y4 u- ~9 Q
6,pip install faster-whisper
( K6 \4 ?  Q& a0 r----------------------------------------6 x/ J* B2 J& t; D
whisper 我用的命令行,faster-whisper 我用的是python。7 i! P! j' ?5 P1 {! ?
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
' Z/ o: S( s/ J0 ?
2 ?1 \4 g9 e. j! m- j----------------------------------------
2 [: E5 @- L  j- t8 B6 r8 X* o+ v6 H3 v6 _( R* x' N4 k( I( b
from faster_whisper import WhisperModel
: @+ }7 y; t& ]! X% {4 |+ Z( i
- [3 Q+ l! y1 e! P, w, {  D* M, c  [model_size = "small"$ @7 @% R2 \, E2 d7 U

. b* i6 `8 w* S4 Z! S' Amodel = WhisperModel(model_size, device="cuda", compute_type="int8")
0 T( T3 {, s+ ?% x- a5 Y! G5 A" F/ Z0 s* C. H% b. n, \2 H
segments, info = model.transcribe(
5 O1 d- m5 }" `, b- K    sourceFileName,
# o: u3 p' S! R' \2 l' t    beam_size=5, 2 ]4 m" p7 n) Q+ ]# x
    language="en", ; @9 g$ b6 l5 d
    task="transcribe",
% ~* j# P2 p: a' i" E- A    word_timestamps=True, / J2 w& p7 z5 K+ |! B+ ~
    initial_prompt = "Hello, welcome to my lecture.")- g5 `; k/ w- ]6 [& I
1 A$ G# ?; h7 E  l: X( p0 M
for segment in segments:5 F) I' R; z, a( r" x
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))" H" D1 B4 F4 J  w% q, p, @+ F1 ^2 f

: u" Z. D; T! N  F        for word in segment.words:$ M/ h4 m3 _0 Z+ b4 B# y( J
               
3 t3 R# P7 g9 `% A$ f/ u! E; H5 u----------------------------------------
+ O  u  |4 u  @$ G/ S4 k9 B: X9 b4 v% X  c, I- S- t+ p
代码说明:
, |0 F8 f" ^1 z0 U: Z1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。9 N$ @2 o! U( B5 q
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。1 G3 s$ I) K9 T4 I- R, _
2,segment 本身是很粗糙的,做字幕勉强能用。1 U! d5 Y& O( u+ ~/ d
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。4 Q. Q4 N8 x" k$ @
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
! e% v& N4 q" d. S$ E8 a比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
$ L( [3 Q% b/ _2 G4 B. ^, U6 j5,model.transcribe 中参数说明:0 V* |" R- N' o* L9 H
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
1 z: u6 d  c5 [- _其中
% ~2 V! R  g/ `( u1 o2 A  ?6 q9 j; I    word_timestamps=True,
7 K* S  r  v; P! O6 D保证了你能拿到 word,否则是拿不到的" Y( W! ?' J4 d5 b7 }4 m
    initial_prompt = "Hello, welcome to my lecture.")* d0 u: l, `; K) o5 M; |- }
保证能尽可能准确的断句 punctuation,但是不是决定性的。8 d' F# }- w& j
其他参数可参考源文件:
3 n! e5 w+ D1 W9 M' nhttps://github.com/guillaumekln/ ... isper/transcribe.py9 E. A! G  _) p4 Y& J* U7 t' Q. ^
152 def transcribe(7 P/ R! R6 d0 n4 G6 g$ e4 x) R" E" o
从源文件你可以看到是支持中文的句号断句的。) D4 W5 c! Z. Y" a% L9 D- J
. B9 R" d5 G$ D
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。7 k  i/ u# {  r( B6 L2 s
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。( a5 g: {2 Y  ]3 n! }2 l7 n  ^
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
3 ?; l' U& ~! A) L  U3 o
9 Q; Q" A# I8 v3 A
/ C9 D2 F! s, R8 c6 z  K- _/ O4 L+ }. M3 m  I8 v! j( L% m0 c3 v: ~) _4 T

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-10-5 07:57 , Processed in 0.059620 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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