设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 0 z8 V* a5 d3 s3 u2 _- D- S2 @
3 D  k% A: W0 G
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
2 n' a: f4 P/ _0 z效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。% z8 h7 _6 H" _3 X
----------------------------------------
4 H6 F  y* j8 D( @显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
4 z9 v  \: p* y1 w7 }0 R0 H4 i在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。8 m5 Z' r5 K& H# p- {7 H
----------------------------------------% ?+ I3 U$ z0 C  r  m
https://github.com/guillaumekln/faster-whisper
% [% D# S* Z7 v( H8 _& l$ x2 D% U安装如下:/ E; W3 b2 R/ o. _
1, Windows 10
2 x7 r0 }. K, n, O! S, v% k2, Python 3.10.110 [1 V7 e- E" {% f# Y3 s# B" Y
3, CUDA 12.1
' B/ P0 c+ I# v3 l4, 在python 3 中安装8 U4 r6 ^' _0 I+ n; j+ o
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117# {6 t" J0 |0 L, N8 v( S
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
7 ]3 A2 L/ u8 Y8 a* _  E5,pip install -U openai-whisper( ^- U0 C) c3 e" g9 \
这是向whisper 致敬,可以不装
2 O2 ?: \1 G& M& c* \, c6,pip install faster-whisper" e* J% I' [4 j6 u2 Z
----------------------------------------* Y; i! _! d/ K1 q# Z
whisper 我用的命令行,faster-whisper 我用的是python。
$ M' k7 a' |" a7 O, z( ]下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:8 D, [8 x' r% X; o) R& _9 N2 P$ R
# L4 }' j# N6 \7 ?( r( v+ E. T
----------------------------------------5 }8 S$ r# C4 n( d' ]8 t
; k# O( T; B2 I% j
from faster_whisper import WhisperModel
6 H8 g& a0 H6 y- L1 r; _
% K- u4 d6 G6 W0 g- N( Amodel_size = "small"
. L3 l) j  p$ d' F
4 P) u) f2 G' g" C$ Mmodel = WhisperModel(model_size, device="cuda", compute_type="int8")
' N* x# ]' x0 X; R% Z# J9 Z( t/ S# E* f' P
segments, info = model.transcribe(! l0 x# y- K) m$ [; F1 w. e/ K
    sourceFileName, - m6 m7 J" s( z. K7 I( ~
    beam_size=5, " S$ N% k! C/ O. }1 I2 W$ E$ l; N
    language="en", 7 w6 Z: v+ k0 Q. r- @" X
    task="transcribe", 4 {& [, ?7 h. w, N& K& E1 K
    word_timestamps=True, . P4 ?: F9 s0 v6 v, d
    initial_prompt = "Hello, welcome to my lecture.")& o5 B% \* ~7 {' {) W( @" C. {

) q: l* H4 X+ qfor segment in segments:" B9 f( D; C& p/ \7 I8 c
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
( Z1 P! m( H# V' P8 a, N, l- Y) l+ V( P$ w
        for word in segment.words:
( h+ v+ p: L5 |                # j+ D5 I' R0 L
----------------------------------------: b; v1 g  M# U7 W9 z1 {
7 `" U! k) y- I+ \$ z! s
代码说明:
. D2 @; @# ]2 a* ^1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。0 r& n$ Y) O" C# _4 {- P5 Q( G4 F' V2 p! v
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
" m; B3 T: t4 ~" I4 L* D2,segment 本身是很粗糙的,做字幕勉强能用。; Z& y& e* |4 G2 G. p8 k# M3 t8 }
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。1 G. O% k$ B3 T; i+ n5 N+ Z
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
' q# _+ t2 V& b4 O2 N' }+ k  E( [比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。4 Y% z7 C/ m( \2 n. g
5,model.transcribe 中参数说明:
: m3 o0 d" D3 H你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数1 p1 O, E; _& r0 ^- u" W' |. U6 E
其中
* w5 u2 C$ `6 J' ^    word_timestamps=True,
5 S0 T+ I6 t9 \$ Q1 h9 ~# i5 U1 D1 f保证了你能拿到 word,否则是拿不到的
1 i+ P, d: {1 m6 Z    initial_prompt = "Hello, welcome to my lecture.")' q: z9 Z% V* g, a9 H
保证能尽可能准确的断句 punctuation,但是不是决定性的。: K: W1 M8 ^7 G+ x" p% e& X2 w6 t
其他参数可参考源文件:
% t6 |  P# O, o- @https://github.com/guillaumekln/ ... isper/transcribe.py
2 b: Z1 u% j' V! ?  \3 p; n7 O152 def transcribe(
! S; g' t9 X* h8 ]; b从源文件你可以看到是支持中文的句号断句的。: x0 \: r/ \# ~
- c; I8 k2 V% S5 q  m3 D& t6 |
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。1 M- O" T! Y3 u% d4 \+ ^, L
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
' a# v9 f( w& H, q' g2 F, I9 r8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
9 U4 b( D; E8 _7 Z
* }& V' c7 S8 P- l8 v0 E8 U5 I * N, g4 z5 c) q5 v  S

" F# ]: R6 M, p

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-10-1 06:19 , Processed in 0.068416 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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