设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
3 O, w! ^0 F/ t0 o- M& X# _
$ C8 u2 Z5 O7 ^  s  v借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
9 t( W5 @+ e, S效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。9 B9 P) c. z7 k9 }- |; k3 H
----------------------------------------1 H5 ^0 u* t# I& E  |
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。; K8 M. c/ O  @% D
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。% o$ X/ z7 U1 o$ L: Z( c
----------------------------------------, c7 a4 |* e" D' B9 _6 E  f8 \
https://github.com/guillaumekln/faster-whisper0 P9 D% k1 {5 g7 n0 F9 j+ X' G
安装如下:
; e0 ~- X. o& K% J  N1, Windows 10
. t; o2 K, o% l' e& l8 Q  g1 U0 a! c( U2, Python 3.10.11. ]: ?4 U& l( y8 _; D2 l
3, CUDA 12.1
; L/ a9 x8 p4 D" i7 h9 P) ]# F# m4, 在python 3 中安装$ v/ W$ a* g3 r7 Y
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
/ d0 G. k. s6 F; X* }这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。5 C0 G8 E- z; ^9 C0 l
5,pip install -U openai-whisper/ M% ]) }2 a& ~
这是向whisper 致敬,可以不装
) `- u3 E8 e3 |7 M) F6,pip install faster-whisper
! ]& o  u2 {7 q3 L$ h, w----------------------------------------
6 Y# \/ H5 P* ~4 u% g. M# X' Twhisper 我用的命令行,faster-whisper 我用的是python。* F' A* q; x( g7 O
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:0 t: E& _. L: y) G. X% s

$ k7 L2 P4 k4 n: j: E, U( I% X5 c----------------------------------------% d0 w5 X) W+ m
& F6 e4 f; G* c: `+ r, ?; E
from faster_whisper import WhisperModel
$ B7 ~# T& S1 \+ J( }9 s, \. K/ H1 g
model_size = "small"7 _4 z: t& z7 N: m4 w8 D

$ q9 B; ^) r0 \8 k. ?2 w" Amodel = WhisperModel(model_size, device="cuda", compute_type="int8")
( s! X/ E7 A8 E0 Z2 C" J! f' K! }, }. r& _; U
segments, info = model.transcribe($ D3 x: ]* D* M4 @# x' r: Q9 M
    sourceFileName,
. C. w: \% J$ Q) B, b6 ~. R    beam_size=5, ' R, o$ S& A* s% C6 R& z# U
    language="en", 1 T1 O7 [+ V1 b3 E3 e* m
    task="transcribe", : v8 J, \9 s! j( e$ ?8 A
    word_timestamps=True, 4 g( w1 F9 C3 `) z" ^% M
    initial_prompt = "Hello, welcome to my lecture.")5 @  s* ?  P0 f5 L3 _

+ G7 R' {* K% afor segment in segments:7 H: t6 i' S9 B$ j# E( a$ n
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))/ X  Y! t( D  B2 t
4 c/ B+ V& c' @! V' `
        for word in segment.words:4 V: c4 Z( q& g) v) H
               
' W2 t% j3 {( [* U$ ?6 Z# |: l' l----------------------------------------
% C- O% F4 p# m  k; M. d. @+ H  n
! _. U, a# ]& \# O代码说明:$ C* M' F+ s+ |9 o+ E& ~( D& T4 M3 \
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
4 M: L2 ?0 O6 D4 M7 t但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。4 t5 T7 x0 h5 l, o4 g
2,segment 本身是很粗糙的,做字幕勉强能用。
7 E6 h/ d7 W+ b: |" }# T3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
$ B3 Y1 ~: _1 ?8 b6 m4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中/ ~; {, V: {' |5 T# ]
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。5 U1 g+ i: ^7 @
5,model.transcribe 中参数说明:
4 V. e& Z' d* U  n. v5 y你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数2 j  f+ t& z! ~- O. M
其中
8 ~) N) G) T# H: P    word_timestamps=True,
2 [/ @0 l6 }& M2 T- x) w! Y保证了你能拿到 word,否则是拿不到的
4 d: F* ~# U, _# p4 {    initial_prompt = "Hello, welcome to my lecture.")& Q1 @  _. r6 S+ @) w) X
保证能尽可能准确的断句 punctuation,但是不是决定性的。
* |+ W6 V. w+ A1 K+ c* v其他参数可参考源文件:: x9 n0 f; {; d$ z
https://github.com/guillaumekln/ ... isper/transcribe.py# g; ?8 A1 z- d* \2 [( i" ~
152 def transcribe(
( J5 H. \4 q5 w. B/ L# g从源文件你可以看到是支持中文的句号断句的。
6 t# v0 y8 O- x. V/ q  n  }& p: Y  z' L  }4 v( w6 h  r1 K
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。  `: m. z+ H0 }4 O, A
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
( d* ]% a5 K: @9 l5 [5 E8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。3 b3 J5 _8 j# H6 |' w; I, r
- G; @' c$ e; D! X' ]+ _, B

- B! k, d  o4 i1 p6 U
0 h5 A: a. s& c! p9 I5 u

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-9-14 00:15 , Processed in 0.057036 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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