设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 . k$ l) v2 X9 W0 |2 `, ]
3 r7 {  G1 y; ~
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
# W# m" H4 V$ z& v7 u效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。4 i! I5 a' c0 f) F* h, y9 M/ V
----------------------------------------
/ e9 v: N' @6 r" y( S7 ~  R显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
' i/ r6 v6 ]4 N) E* y! Y在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
4 w7 U. e/ L+ h" `----------------------------------------
2 s/ {3 {8 E7 g! e# k0 Khttps://github.com/guillaumekln/faster-whisper- C" ]+ q2 R, p4 t. y% {
安装如下:3 \( W% @1 P" e+ E; H5 I
1, Windows 10
4 D4 [  e9 Q3 s+ W+ J2, Python 3.10.11
, z8 x1 _* w5 ?0 H' J. F0 ?4 a3, CUDA 12.18 X1 i/ z+ U7 u1 e$ B* h
4, 在python 3 中安装
# J3 v3 G3 M: epip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117" {( i# _, o5 X
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。5 w- s5 Y3 b+ \5 D& R1 P% Z( R% i
5,pip install -U openai-whisper( B) |" W4 i8 ~. M
这是向whisper 致敬,可以不装
/ }  n% v2 V. \1 \4 v% \! q. t6,pip install faster-whisper  P8 ?! J+ v7 k! J5 H
----------------------------------------
1 r+ k6 g2 A2 S% n! D4 swhisper 我用的命令行,faster-whisper 我用的是python。
# s+ v9 K. Z) b. ~) H3 f$ b- O下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:; H) p; T$ g3 F, Y* ^9 f

' U* o( s& K  n& _, u----------------------------------------8 m( F: j0 y6 t6 p- ^! Q! Z/ S

7 ]1 T. w" J. c5 t' Y$ M3 ofrom faster_whisper import WhisperModel
% a, I4 K$ m% _( i
) E. ~3 l: Q2 n" @. Y7 l$ kmodel_size = "small"
! A. k. L: }2 {" o' _  X1 m( k
) g5 p8 U, t- O) c( ~model = WhisperModel(model_size, device="cuda", compute_type="int8")8 [* c! B( X" Y; P
$ r9 R" E/ V6 s1 T
segments, info = model.transcribe(
% A2 E, S( \1 h$ G/ b5 _    sourceFileName,
5 {; f) I" H( g; x- a5 a    beam_size=5,
+ e/ Z# @# [! F, l. [: E. a5 l    language="en", 9 ]& ?1 ~$ }# @  A* N
    task="transcribe",
, C2 ^. W, H, K& ^5 }    word_timestamps=True,
3 T. ^# ^9 v* ~$ `  z3 m: g    initial_prompt = "Hello, welcome to my lecture.")2 v( x- `* b! T7 q
' b( W" G" _  b) C1 Z' h, i
for segment in segments:
5 x" V$ x6 Q0 K3 v    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))# D% z& E2 U: G5 D+ F
. T# Z0 K2 T0 E& Z' m% _  C5 e
        for word in segment.words:2 G, P  }4 B% n; W# w) Q& j
                " L8 S  C9 a" ~9 w" p7 N7 }
----------------------------------------
2 E! I7 i2 E9 |3 V3 K1 w$ [2 |/ X* `9 u! s
代码说明:
8 E, x& }" }3 ^3 g2 Q- _+ F# q1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。; h5 T* y8 J  D0 a9 C
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。6 K8 \- W6 s2 Z5 Y# r: |5 ^
2,segment 本身是很粗糙的,做字幕勉强能用。
' @: A$ E9 {$ U) @- o5 B% L3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。+ c6 W& {% F3 |
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中3 V* l( O; o0 X0 c2 q
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。  ?* Z8 g& T- l
5,model.transcribe 中参数说明:7 V" W$ O8 ~6 }# M
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数. P# P* e0 I+ m/ A
其中) Y+ w! C9 ?- |0 j7 m8 M
    word_timestamps=True,
: L4 @% C9 E# }5 Q/ y, \) |, S保证了你能拿到 word,否则是拿不到的/ C  S! ?; S* @6 t, B6 m# O, ^
    initial_prompt = "Hello, welcome to my lecture.")
' S9 J7 v; s. u  m' U' K保证能尽可能准确的断句 punctuation,但是不是决定性的。* U2 Y# o- k% z. b
其他参数可参考源文件:) w: l( I; C7 E
https://github.com/guillaumekln/ ... isper/transcribe.py3 _7 }/ @9 Z  j6 f) o5 ]
152 def transcribe($ I, R- C* d/ I! I8 {1 O
从源文件你可以看到是支持中文的句号断句的。
: u3 _, V' @  Q
% ~4 c- M) l' V; @2 i% h6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
& M$ t$ i( P1 X! P& r+ R3 A7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。) Y0 H; y. r3 G/ b0 x2 R3 U
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。  F0 `1 a' [8 Y. x
: `. `% l6 K1 ~3 C4 {; b; a& E

( l5 j& Z& y; [3 d" t( I: Z# C' Y) J

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-6-30 23:21 , Processed in 0.065323 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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