设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 " z2 C$ Q* ?% `
3 C% W3 \5 |/ m; r0 S
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。& H; b9 K2 h5 @" |' j
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。, K/ e' i; v: r: f0 i9 n9 w9 K2 X
----------------------------------------
2 o2 i7 @2 y5 k4 g1 b0 c显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
: O  Y6 a1 q8 g& M7 i在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。" w5 X5 x) r( P+ ^  ?3 u! l) m
----------------------------------------
% `4 }+ F' S9 v# i. p  Whttps://github.com/guillaumekln/faster-whisper
; s0 _5 R) X! d2 z% ]安装如下:  P  S. [8 w$ r' O
1, Windows 10
1 Z! p. a  g' D* q1 |- g/ {2, Python 3.10.11
4 Y0 _9 K# }. t" a; Y+ W3, CUDA 12.1
3 c* c, D' ]3 L1 R; f4, 在python 3 中安装' }' A9 E' b8 Q( g5 Y; ~
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117; T8 H1 X: ]% k
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。! v/ Y  C! Z6 T- c% J/ \8 J/ E- D
5,pip install -U openai-whisper
8 H0 t. s! `( p4 a8 h7 n这是向whisper 致敬,可以不装9 [! v. \- z1 ^0 L
6,pip install faster-whisper
$ m: x  z; c1 E) x$ E/ m----------------------------------------% m  L! b9 c  v4 t" p% G$ |
whisper 我用的命令行,faster-whisper 我用的是python。
) o: V  v6 z$ }+ N& W! s- K下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:/ X% G4 p2 m( m5 {) m" d
- m# ]2 U7 Q/ {" C$ _3 C. Q4 l7 V6 ]
----------------------------------------5 P4 ~/ b. D/ T2 y) c# l5 R
" w5 A  \+ F- ^% P# C0 [4 B
from faster_whisper import WhisperModel. P" _4 x1 p: @' }* p8 I

' W. L: \" }* g" R/ t% q* Z, omodel_size = "small"
  ]& _* z4 Z8 s
6 r3 P, Y, B& B% E5 k& E% K/ ~model = WhisperModel(model_size, device="cuda", compute_type="int8")
* i; N  q8 n$ f" f. J( P5 D4 @
( F, B9 W$ Y$ j4 W9 {5 D. z8 vsegments, info = model.transcribe(
5 h3 x; s% C0 b' d! L    sourceFileName,
' z" n& y2 Y  A    beam_size=5,
9 f% c" G, i" w( j- N3 |3 O    language="en", + N! q( m! q/ f8 b9 W
    task="transcribe", - N# S  ?7 n" a6 f; p7 J
    word_timestamps=True,
0 ^2 i, w. H; B) _    initial_prompt = "Hello, welcome to my lecture.")
) _' |( Z% r$ d8 @2 {; W7 j) Z5 {5 ]
for segment in segments:
! w8 V! x  t7 U) _' A1 m2 m# p    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))) q% Z$ x, V+ Z( k; r- `
. }! S6 @& |# [3 H% M
        for word in segment.words:
$ P$ \8 |' \& `+ o  p% Q7 Z                4 X- {8 b3 G8 |: y
----------------------------------------: T: Y, L  b# n

2 s$ f- O( ^1 n' d8 C8 o代码说明:& x  N% {9 R; f% e9 j( s0 o
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。7 y7 Z0 p$ M& Z+ A- s7 m. W' H
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
$ {8 c# o5 d- H2,segment 本身是很粗糙的,做字幕勉强能用。+ _. Y7 ?% b6 m+ x/ B  P
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。) T/ G. Z, C7 W2 i" g' x; G
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
9 P' \9 L. b& r1 Y* P+ O4 U比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。+ e, F7 c1 K* @8 s
5,model.transcribe 中参数说明:
: ]0 A5 c$ y; U% K你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
2 j7 m2 ?7 m# O3 ~6 \其中
5 m1 R9 {. u4 w. m2 U. A0 N7 U    word_timestamps=True,
) @( j7 \1 e# ?$ H保证了你能拿到 word,否则是拿不到的
$ d- X7 p, x! N% q    initial_prompt = "Hello, welcome to my lecture.")' K. R& r5 U( [1 z* d2 x8 o) s2 |! b
保证能尽可能准确的断句 punctuation,但是不是决定性的。! C: s# X0 G4 v( V0 A
其他参数可参考源文件:( J9 g8 z# e  _/ `& Y: q$ n+ Y
https://github.com/guillaumekln/ ... isper/transcribe.py; ?1 n! `$ {8 d  E! o4 c3 i) ~2 D
152 def transcribe(: G7 p2 i3 r7 F$ I. Z4 ^
从源文件你可以看到是支持中文的句号断句的。
8 p9 b% B0 d3 l1 `- e" a- _
7 H2 g% [" w5 x3 Q4 \, t8 b6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
# |$ L, C6 ^% V. z; M( K2 Z) F: T7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
$ S4 v0 [$ R/ x( s8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
  ~/ s" h: j9 u: g7 J& ^% |8 i0 U: s: R. e( N# ~% d- G
/ i* m+ K. }; U7 q3 M% D4 X

- ~+ t; m* o" I. a6 A

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-4-22 02:08 , Processed in 0.056883 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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