设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
$ [* E6 P& }1 K/ P5 L
1 q6 \1 b6 Z: ~: X& G( P- A借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
! b  `9 P/ e/ \; P2 w效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
- m: {0 c' u8 T' `3 c1 E----------------------------------------! ]7 u$ A7 H4 D- R% ^& Y
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
9 \2 e. u- y4 y  {4 j在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
; p+ E9 s9 L! F/ O----------------------------------------
: {  u" ?0 Z* Y& T+ Uhttps://github.com/guillaumekln/faster-whisper
# s0 F4 I  G" q3 N安装如下:5 Y0 C4 g+ j2 P2 t
1, Windows 10
! A/ O/ b3 r( D) B8 @% h2, Python 3.10.11
, M3 U9 O0 _1 v8 ]9 d3, CUDA 12.1
- g, f& ]" |2 o+ W4, 在python 3 中安装
# W; P9 {- Z( u; \! L, A* D4 ppip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
+ R) h, E  W! w  V. y! s1 a这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
; n% a3 y4 X+ c0 |! k, e5,pip install -U openai-whisper' m$ V& I- p1 E! d$ k: S* Q
这是向whisper 致敬,可以不装" R6 d- d. X8 S& t3 p
6,pip install faster-whisper
7 @* V+ E0 s$ \2 h& y+ p8 t' s----------------------------------------
( V, @, X' _" jwhisper 我用的命令行,faster-whisper 我用的是python。  H) S; v: x2 ~, C, O
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
" L2 c' A0 D9 P5 `  M  ^0 V
4 C. t* b% _( ~, x8 i5 b----------------------------------------
5 v7 X7 a/ y2 i9 d
9 z+ ^$ r( Y: p7 @, @from faster_whisper import WhisperModel
: }; Y7 M6 ~8 C' S4 m+ `2 J: V4 M- g9 ~7 r2 m$ l
model_size = "small", L& }9 U8 Q  J" X

, F  a8 ?* L- d; X: k" [+ Y2 Omodel = WhisperModel(model_size, device="cuda", compute_type="int8")
2 ?5 s* B" H# m- ^
9 k7 k0 z$ ]& F. D. csegments, info = model.transcribe(/ @$ m* ?5 G1 Y5 W  j
    sourceFileName, + e; F; R+ e- P2 ]/ e+ C
    beam_size=5,
+ U2 `* }! f, V* q+ X    language="en",
+ B$ I( L! t2 O$ E1 D    task="transcribe",
. [# C3 x2 H( ]5 ~: |9 [) E    word_timestamps=True,
' V" y+ x, B# J    initial_prompt = "Hello, welcome to my lecture.")
6 |( c! w- q. ?$ C, u, t
8 X7 D# p# z" X; x3 q: Ofor segment in segments:) `) z9 R* d" U
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))1 V' Q+ W" o- R6 ^

9 B& k( ~/ K3 R& ^/ p" }        for word in segment.words:  J& ~" J$ l/ T
                ) M8 D4 H/ j5 x6 u4 G" L7 Y
----------------------------------------9 ^7 B! p; m7 G( V0 U9 b/ p4 V2 T

8 e8 \- S; P) h) O$ D! v- D' e代码说明:
+ V! |1 Y. g* U! g: F5 T" G1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。5 ^/ c, ]& R$ i; [9 i9 t
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。. W: c( a3 Y9 U- j& ^0 i  r- a
2,segment 本身是很粗糙的,做字幕勉强能用。
: b, f0 p5 d6 \. S3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
6 X, X1 s; I9 G4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中6 X8 x8 l7 p& C: v
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。% ~: E, y" t  X  o" ^
5,model.transcribe 中参数说明:
: F5 W0 }& l3 J$ g, s8 Q/ T% r你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
& A4 j* N6 N) {( q8 T7 L* t其中
' h- H& \  c0 H9 O) z* u# v    word_timestamps=True,
, c0 B5 f9 {5 ]6 H& t. c  b保证了你能拿到 word,否则是拿不到的3 a- W& j; P: e
    initial_prompt = "Hello, welcome to my lecture.")
& g0 o( S. M- O- ~/ a4 R% w保证能尽可能准确的断句 punctuation,但是不是决定性的。- [: Y$ v7 q7 V! B. [( M% \
其他参数可参考源文件:
- z4 c3 k. k" R% Z* [/ {$ J$ ~+ D* mhttps://github.com/guillaumekln/ ... isper/transcribe.py+ G7 B5 a2 [, s8 @7 Q
152 def transcribe(
  L1 R% \4 v- z- R) L从源文件你可以看到是支持中文的句号断句的。' e& A7 a8 X7 g
9 [  F$ M8 \. F: E7 q
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
2 i5 `( [) L3 z& l. P: i; I7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
$ L2 P; s7 M7 b0 S) {) U8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
/ R( \" D% Q6 Q+ ?  K; H5 @! v  S3 E

: m9 w6 V, [9 C" s' u5 @& u+ d* v2 E
0 A' j+ A: s; k! _9 Z0 o

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-6-10 02:32 , Processed in 0.055387 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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