设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 , }$ @, {+ N3 J  U0 i& t
8 M( T8 ]9 C, B- v$ i0 f
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
8 k/ P$ F! |3 T7 p  G效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。' D, r6 `- D) E* M/ B
----------------------------------------% B; L1 R  \: C
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。) ]  {2 D3 q2 m4 ~- k4 b4 e
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
& X2 @. E( u# r- ~; r5 }----------------------------------------8 r  J2 k3 d$ i- E& ?) z
https://github.com/guillaumekln/faster-whisper
9 u/ R; j! d* X7 u! b4 I安装如下:
" R/ Z7 v' L% v. U, W$ B8 {$ \1, Windows 10
, a$ J6 ]9 x1 N4 ~3 Q) U) g0 C2, Python 3.10.114 H/ b" a% [& M: W8 l
3, CUDA 12.1
. }! O* Z+ k; m7 ~( b, n* k% g4, 在python 3 中安装
5 G  |2 j5 Y6 `( z" N( O; _" ppip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
2 F' E# s9 n& D. B这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。4 H8 [2 `8 a7 K
5,pip install -U openai-whisper) w. Q. D$ G6 I3 M
这是向whisper 致敬,可以不装
6 P2 m( A. S" a+ i9 i% D6,pip install faster-whisper
2 e7 N  E2 H3 ]( i$ r0 b4 S----------------------------------------
7 D8 u( F% F" s  R( Dwhisper 我用的命令行,faster-whisper 我用的是python。/ @! o$ S! h" R7 R3 F8 S
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:) W6 K* C$ w2 N

, p* S: C+ [( f( p, ^----------------------------------------$ U; g6 E, h8 W: Q8 n5 q5 `
5 b, M0 `# k' Q5 q* F
from faster_whisper import WhisperModel
& f7 l/ u) r- p4 @) N7 R
! U' l. l* O% Z5 kmodel_size = "small"
1 F1 e; j2 ~. w: c, r0 S* f. z+ K" H
/ j$ A& W- y7 r$ Zmodel = WhisperModel(model_size, device="cuda", compute_type="int8")0 e% T+ u/ ^- o" @" l! H

- U" {& c8 k+ c9 D6 ^segments, info = model.transcribe(3 J: i9 r5 Y1 c
    sourceFileName, % S$ K# g* X+ q( P/ ^
    beam_size=5,
) y: V3 R, ?3 B5 N, h) o    language="en",
- |6 G; ]) v# |    task="transcribe", 7 M8 U- L8 k; K, [
    word_timestamps=True, 7 X2 w# h0 m4 h3 ~% W+ ]/ p
    initial_prompt = "Hello, welcome to my lecture.")- y3 i) ]+ Y8 N( ~; J- _

7 ?7 k" P: Y5 |$ ]( w: Qfor segment in segments:, n6 w8 C& H- u) T! C
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
6 s9 p# L: f. P2 Z
9 e. A, f0 y$ R3 c/ p        for word in segment.words:5 [4 ~( z; |; O% p
                ! [) q% ~) c5 x5 q9 P
----------------------------------------. A! ], t" H! P# C/ k$ T

3 l6 d9 ]! S- o% _6 s7 {2 {代码说明:
1 H. U! O! t# a3 W  J) }* O1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
! r5 t/ T5 x: U1 S# x+ K但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
' F  v; ]0 T1 v2,segment 本身是很粗糙的,做字幕勉强能用。! t1 U* ^: [. k- J' d  R0 J- `- q" ?
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
+ U) t: V0 x/ `4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中5 w4 Z1 M& Y. N9 E, ^+ ]1 L7 @; W
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。7 x% |" s' T6 f0 x7 z; e
5,model.transcribe 中参数说明:
, u# Q4 f* G& I你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数4 m: A( p7 j& o4 s# N. n& `9 R
其中
+ k" g% p; Y6 ~  b% S: F9 ~1 ?    word_timestamps=True, * m" N) r6 ^+ q
保证了你能拿到 word,否则是拿不到的
, I* P1 z7 v% B9 N' o8 T7 ~: B    initial_prompt = "Hello, welcome to my lecture.")
% _9 a* L. g, O6 G# |! R3 {2 s保证能尽可能准确的断句 punctuation,但是不是决定性的。
8 p% v$ T: b( a" f其他参数可参考源文件:
4 K# C- [0 [6 b5 ?, k6 lhttps://github.com/guillaumekln/ ... isper/transcribe.py
+ _; i/ g3 L# r$ k. V5 f152 def transcribe(6 f$ ^& ~; H$ w, E, E( R
从源文件你可以看到是支持中文的句号断句的。
/ B: h3 b! c' [- w. [, d+ @% ^5 v2 t/ N/ R
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。4 V9 {# h, Y8 G; R9 i* f
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
  U% A. G6 ~( x0 w8 j: y8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
3 z" @/ ?3 s+ G3 |/ T9 p6 w8 T9 a# H( g: R0 d

( q$ i, U  y; V9 H& S+ D2 c) A8 s& |: m* b7 x+ h7 m% `! e

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-7-26 17:21 , Processed in 0.057786 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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