设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
5 y+ e1 g7 B; I+ \8 ?# E! V& e7 a
  ]1 k( o% n* D9 K# F& L借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。. W+ g$ p' X8 Q/ D
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
. T+ L* b* g5 k% i) s- _1 r----------------------------------------
, a/ M6 D" l1 k. H1 Z显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。' ?: R3 M4 k/ D( }
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
4 B9 j' @% Q1 w# H----------------------------------------5 s, o# E% r$ p: o3 P8 x2 d
https://github.com/guillaumekln/faster-whisper# _" L: Q/ o. q! A' u4 B
安装如下:
4 }0 N% U* K" _! l+ D1, Windows 10% S" T. p1 G. h4 ^
2, Python 3.10.11
; F3 `) v+ o' \, c3, CUDA 12.1! d* u* E9 ?* U  X: }% T
4, 在python 3 中安装0 _+ ^; i( N: w2 U# C
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
8 e2 h) ~; |4 [# R这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。+ R( x  r6 G, S0 A6 [; I! ]
5,pip install -U openai-whisper
2 A" q# t8 i% ]" J6 ^这是向whisper 致敬,可以不装
. z7 K9 O; _/ X( m' w: J6,pip install faster-whisper/ X5 i9 S" M1 d2 ]  Q: x; U" w
----------------------------------------0 c# l, ~- \! d' t
whisper 我用的命令行,faster-whisper 我用的是python。
6 T- V. d, i) R  [  u下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:- I& X) y3 S. l9 o* g' S

1 l9 u/ N3 g) o' k  @* J4 `----------------------------------------
2 k* ~0 P# Z; h$ u' S  I& a8 R
+ v% c9 M' w7 h  {from faster_whisper import WhisperModel
4 l% p1 S# f; l/ E1 a$ j! f9 M1 P1 k
model_size = "small"
3 R) R8 q- _3 f: L2 U" f  p! E/ j, @
% l2 h/ h/ z8 z  {model = WhisperModel(model_size, device="cuda", compute_type="int8")
5 o8 B% s$ D! @9 c
/ C- i* t  M( I" a, s+ U9 v, Fsegments, info = model.transcribe(
* |7 ?$ T+ ~3 T3 ]: W5 o- P    sourceFileName,
/ j  U' O; ^0 Y, G  m3 N+ d    beam_size=5, 3 F2 e* L) f5 Q
    language="en", 7 b. l4 y1 n, X# A, \8 g( o
    task="transcribe",
/ o+ @2 b! a! d+ ~    word_timestamps=True,
, R" p( o8 a/ |& q  S; V    initial_prompt = "Hello, welcome to my lecture.")$ z0 p- q1 h& a7 Z  W# N: [6 r
% W4 G6 a$ f+ d$ s* ?( a
for segment in segments:
0 ~5 @3 q$ ~+ r' u; [    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))2 M* H) i7 \" T
( ^# g; B' K; e3 W: K- a7 T0 f, g" }
        for word in segment.words:4 o# w" g0 h' E6 O: i! c: w
               
9 \. S3 }) N- x, k% s----------------------------------------4 s- @+ W" c7 X4 _  ^; c

7 N3 ^+ x; v" @5 H4 c: w+ i; v, ^1 E: U代码说明:
6 [2 l9 X" d/ H" s/ ?1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。- s  x' Y8 g7 J  o1 ~! C$ Q
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。- A% l( H+ j" B" T. F. x
2,segment 本身是很粗糙的,做字幕勉强能用。- h% e) \) w2 ]+ b
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
* |( R& a# B2 H# n4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
8 I" Q# K2 ~& J5 x) t比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
9 h$ z! v2 K+ C9 D5 D5,model.transcribe 中参数说明:, X5 t; m0 _0 _3 @2 W( z  U  ?
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
$ o0 L4 g# u/ m6 T8 N其中
7 b2 V$ X3 j9 v( \( r6 X5 @# a    word_timestamps=True, + E# m. p" \( P2 Q, X" Z
保证了你能拿到 word,否则是拿不到的0 t3 e/ F' a5 E& q6 _  s2 m: Y
    initial_prompt = "Hello, welcome to my lecture.")
) F; ~# I" L- b" u9 ?2 T保证能尽可能准确的断句 punctuation,但是不是决定性的。  p0 h. N' j$ L3 D0 |8 C& A/ k
其他参数可参考源文件:/ C/ H1 ?8 Q8 n
https://github.com/guillaumekln/ ... isper/transcribe.py
! A) Q2 v+ Y3 ^. ^5 c152 def transcribe(5 c& t# U/ [, J6 s8 F- X( o
从源文件你可以看到是支持中文的句号断句的。# ]! L7 E8 E: z# O( D" {

: `0 E& q# {: v6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
7 @* O& ~- ~3 ~7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。7 y5 q. D, i$ _& P8 x
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
# l; b( O1 m2 S; H; t/ z. z
; U5 N+ i9 T4 b* T8 a0 c+ t& y& Y
7 W' ?* @( p( u! L$ a! k0 C
4 C& m9 ]; l$ {, y1 _$ l# h

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-6-21 00:56 , Processed in 0.055382 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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