设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 6 C4 L( f6 @3 c: D8 \; z# \
5 E! t$ b/ L; x# m
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
- u6 L: c' y; x  I% h效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
: }& Z9 ]3 c+ Z  V5 m6 _# h----------------------------------------
6 s! n6 T( U' I. P  F! q显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。9 M7 F0 z8 p$ `& ]9 U$ F$ X" I
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
- v# l2 y; _* M, c$ F# }----------------------------------------
1 ?) l# b1 B/ I2 G, ahttps://github.com/guillaumekln/faster-whisper
  @0 w2 t. T. X安装如下:4 |7 Z( \, \" i+ h7 m  n
1, Windows 104 M; J5 a& E2 I! J
2, Python 3.10.111 f- G# |0 p1 K) E2 A: r
3, CUDA 12.1
( ^7 l4 ^) a- G+ n2 {3 \. G4, 在python 3 中安装9 c, Z# ^& o7 G! X1 \! R& l
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1173 Y( ~1 s1 U) b8 X# }( y" z, {0 r
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。: x5 d4 v$ N9 {4 k* U
5,pip install -U openai-whisper
! ^3 E3 p4 O% Y: h8 ?5 h这是向whisper 致敬,可以不装
. n0 R) A' E# H3 _6,pip install faster-whisper5 m8 m) f! S4 o" `  M) h! Z
----------------------------------------* z1 D0 T' @& ]4 I1 B
whisper 我用的命令行,faster-whisper 我用的是python。
8 M% [' {. N( o! G. W下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
" P- J2 H) [7 }5 p" ?5 y; A% }0 a2 V; a. i! y
----------------------------------------8 R1 N9 \0 `/ e- ~

" g: ^, G9 f* c8 f# h" U6 |from faster_whisper import WhisperModel
7 P, r* t  i+ B- v; g3 `8 x# v9 H) q' V+ ?; [, ^3 O9 m6 Q
model_size = "small"
  Q  u3 s8 O% f4 s7 N% T2 ^
: j7 h( x. b5 K  Xmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
4 ^" L' ~4 y! E8 g; {( w; m7 Y1 f/ b" t5 z' F. ]# n0 W+ u$ t! c4 t
segments, info = model.transcribe(
: e$ J% _7 p; Z/ g* h    sourceFileName,
/ l% o4 J; u+ Z/ X( |5 ~. ]) B    beam_size=5,
& A( [) g9 a: e& _  n2 o7 U    language="en",
  J& [, ?0 f9 ]3 a6 `0 F    task="transcribe", . ?, D9 A; o5 F: t# r) d2 T
    word_timestamps=True, 2 O# P# {. N7 a- F0 I! L
    initial_prompt = "Hello, welcome to my lecture.")
) Y- n- W1 h( W" S) k3 ~; j2 r$ `+ K! ?1 p5 ?, z  E
for segment in segments:! C: h9 |! @. e& u- y% v
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
+ M1 Y' U$ P& }5 ]* a% \, l
/ N  b2 _" [, I& B! O/ w! i9 j2 F        for word in segment.words:8 q) s( O+ n" A0 B, r
               
& |4 R. d4 `( [+ q; Q  d1 X' D----------------------------------------
# s6 q: y" s, f1 q# ?$ w4 B
/ _6 N* e3 F# V& H8 l* Y代码说明:6 _$ a1 o( s4 M6 \- d! n8 T
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。! [1 C  Z# {  g
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。# O  C: C$ s3 U4 K; S& l7 _! o
2,segment 本身是很粗糙的,做字幕勉强能用。$ @# Y8 x1 o  A- k8 n: H
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。# q  p7 g, o' q
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中8 ?, K, M" P$ ], \! Z: ?3 l
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。$ n0 a9 ^% `2 u; V' p/ w0 W0 s! k
5,model.transcribe 中参数说明:
( X6 ?6 t% s$ e# z7 [, a你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数2 o" d. q) u( j, Y
其中+ A/ A: d6 x; S' F0 w  ?5 K& N" H# L
    word_timestamps=True,
: ^5 R, N) [) y3 u3 X, Z保证了你能拿到 word,否则是拿不到的4 l* B1 P6 r/ F0 g) t8 `8 J
    initial_prompt = "Hello, welcome to my lecture.")% J  M" a3 V; N( a, x
保证能尽可能准确的断句 punctuation,但是不是决定性的。0 O; o5 \( e1 s6 n3 E/ A
其他参数可参考源文件:7 ]4 X0 ~' M$ M: \- }. d5 l
https://github.com/guillaumekln/ ... isper/transcribe.py0 h* Y) Y, ^+ w- a1 a" ~
152 def transcribe(
6 \7 y, e% x" U2 H' B8 S- @. P! Q从源文件你可以看到是支持中文的句号断句的。" ^. E0 c4 s2 S  R. B) B% ~( d
+ s4 w$ v- R/ k
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
; d+ n# j- \' g# |8 C8 c7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。* e3 K! X! x" D7 W  L" N! y
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。  G, {* i; Z% r
9 m' t4 |$ C! W. S
/ ?7 k# [' p' b' z& M$ s
) }+ N( l  p7 V5 W9 d. R5 {

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-2-8 16:29 , Processed in 0.056411 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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