设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ) H4 L9 G6 U5 n/ R8 R( ?  A
. [$ W1 W/ H4 A' A# v
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。( \0 P# k5 V! s, U1 O' h
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。! c* v( c. ]8 \% s$ }
----------------------------------------- g& q- e8 F& g. C, G
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。, {6 k6 w! U& W- a2 _7 x
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
) E" u7 R( Y- K5 W4 [----------------------------------------6 |" y( C. d3 u
https://github.com/guillaumekln/faster-whisper! U7 f) t$ o' S( n/ w/ k0 o% @5 F
安装如下:
" H* |+ b" o) S% A% X3 p0 s1, Windows 10- Q8 a' v4 |5 Q' R1 N
2, Python 3.10.11
2 g$ Y8 I1 z. k" c9 R( D( A3, CUDA 12.1
: h7 e* W; w+ K) b1 `. ^4, 在python 3 中安装
9 G; P7 @$ |; {( j2 y# w- Vpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
# Y" {2 w' x  v4 d* @, w这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
( W* u, b4 f# }, _% Q! s5,pip install -U openai-whisper/ }8 Q8 T1 w# z1 a# O8 j6 ?- W" Q
这是向whisper 致敬,可以不装$ H. C' ^+ p- v8 b; n0 J. ?
6,pip install faster-whisper2 p) B0 X! v- Q# q/ r/ X9 l6 I& @
----------------------------------------
9 w9 k, e+ k5 twhisper 我用的命令行,faster-whisper 我用的是python。
6 C. k. L+ q/ Z& _5 N下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
' C& H$ b. ^8 o$ F( w6 l/ d5 g" q9 t# d
----------------------------------------
! q$ M/ `5 c* i. A% c  G& e, J! _9 T6 _4 X
from faster_whisper import WhisperModel0 @6 E( ^* e3 ~' w. B* K: e
- y+ z; e% i- [6 g4 `: ~
model_size = "small"
* C9 Z7 c* r. J: p" {1 k: Y; z* Y4 W9 h$ ~9 {0 x! d
model = WhisperModel(model_size, device="cuda", compute_type="int8")
& o6 X/ t1 m0 U$ ~9 Y: |9 m9 U
- \- E8 E9 I2 j% u- J) fsegments, info = model.transcribe(  Z/ I4 Y. H2 w1 ?- U
    sourceFileName,
+ ]% s4 Q1 ]6 f' {    beam_size=5,
% y8 l" |4 j6 @    language="en", % A1 W7 r+ a1 ~, ~
    task="transcribe",
% n, ~3 j8 K; n5 E" P3 ~    word_timestamps=True,
/ b0 M% z- K0 ^2 T* b# o$ ~6 s5 H    initial_prompt = "Hello, welcome to my lecture.")
" h* D( J4 E2 D; p' m5 l1 z
' `4 r, t$ f. P5 t4 K! ?for segment in segments:
. |7 q  h* ^- h7 r) K    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))3 k3 c4 S( z; x" }4 t  a1 a* ]

. t' Y* B8 B4 e        for word in segment.words:( {% u; @) B+ R7 y
                ( W0 V. K' m. `
----------------------------------------; ^& N( e6 E- Y3 P' R) r& S9 n) d
! i/ b$ D0 C9 z
代码说明:
. Q6 h/ }' f5 ^# {  j" t1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。3 L- i9 `. K) t
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。( A. i; `' H2 V, m. ^
2,segment 本身是很粗糙的,做字幕勉强能用。! L( c2 [5 d7 A2 s8 r7 s4 B1 A6 W3 j
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
5 f$ \- v% V- p! j$ `; i4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
% z" Z8 S. o' d比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。7 e/ g+ ?4 E- j, O) b8 ?. Z* c6 z5 k
5,model.transcribe 中参数说明:
7 ^% w; @% c7 @- }你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数. I- a9 x/ u! d
其中
' \, ^- i2 ~, L. t    word_timestamps=True,
8 e9 v7 v% H8 ]保证了你能拿到 word,否则是拿不到的6 Q. J% A9 r) V0 h, [
    initial_prompt = "Hello, welcome to my lecture.")3 W, H. R( r, u& ]2 R3 H
保证能尽可能准确的断句 punctuation,但是不是决定性的。
4 ]" k/ ~$ E+ @/ }( T* r, U其他参数可参考源文件:! E' r$ Z$ n& v4 _9 p
https://github.com/guillaumekln/ ... isper/transcribe.py* W" ]* G% I5 }: K; E: }3 d  y3 c
152 def transcribe(
& h9 ^- }  Z) b" I从源文件你可以看到是支持中文的句号断句的。
" o1 d2 P  z  q( f  w' X, m0 Y
$ U( J0 @' m1 y) N, ?6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
- X' t. ~* }( j/ ~1 L7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
, D6 C  T; C, _. N0 o. `- _8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
4 K: T( t$ M! f3 G8 y2 K! B" ?0 I) {- I+ p% M$ I3 w+ X# S

: Z6 k$ j5 r1 a* E# `
& K2 ]; i6 f% A: `

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-12-24 06:37 , Processed in 0.028082 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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