设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
6 t$ [, A6 L6 o7 E+ G) l: c) E: `4 k% P
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
) \( U- P- {9 }$ U0 j9 F( G效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。
4 v9 {1 @* |/ f* Z' b1 i, j----------------------------------------
3 {9 p' T; Y. c, n显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。; Q: `* l% [) {6 }
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。. c- H  P3 W# n! u' p* J: R
----------------------------------------/ R8 ^. |2 |5 W' x
https://github.com/guillaumekln/faster-whisper( g3 n/ ]; m- u2 y, |1 B, {
安装如下:% g5 R/ K- y5 m% K( E
1, Windows 10
) f1 r1 C: ?5 S/ O0 f2, Python 3.10.114 j. ^5 P. L+ p" q
3, CUDA 12.1; F9 i" f# r" q- _3 E
4, 在python 3 中安装* I+ K& N- G7 G% v
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117+ I! D; e) g, q& m
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。+ G' J. @" I" Z+ C; ^( Q
5,pip install -U openai-whisper
0 W- Q& J+ }3 n这是向whisper 致敬,可以不装
- B& _- w  i& Y6,pip install faster-whisper
5 B  F( Q' b  K* d, F" X----------------------------------------
  X, I; s- c: P, ?% dwhisper 我用的命令行,faster-whisper 我用的是python。( q0 o) ?  j+ k( U8 {6 v# U& O
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
2 {2 Z: O0 F% s1 ^' x: v
$ t0 w; v0 U" C7 L5 b----------------------------------------
1 A2 L, Z/ ~/ z% L7 |( Z; L. ^5 v
from faster_whisper import WhisperModel$ |5 r; s$ m% ?4 m5 `

# f8 _$ w) W4 _" z/ Dmodel_size = "small"$ a/ X2 E  k  i# l2 F0 P" q6 q, R
( y+ Y" H" E$ }! }1 t% T* N5 o
model = WhisperModel(model_size, device="cuda", compute_type="int8")
1 {+ [7 {4 t/ Y& {- w
, R5 g5 Z( b0 d' y6 j7 \8 m7 Vsegments, info = model.transcribe(# s! }# G4 I$ y6 X' g
    sourceFileName, / Z% x; f  k5 f; p' Z
    beam_size=5, $ Z+ u) ^' M0 u; C
    language="en",
6 o4 d4 Y* W/ E; d- m- G1 M    task="transcribe", ; b" }& W* ?9 F
    word_timestamps=True, % P* [1 }% J! Y9 c* l' m4 ~
    initial_prompt = "Hello, welcome to my lecture."): J! q3 C; z+ j& Y" u2 g2 N
: E: k! J+ W( K/ Q' u
for segment in segments:
. B$ y  s1 |, a  {+ l1 D    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
  G: R5 C' e0 ~) K; S: ]% q" D: q- b1 y( q& w3 Q7 g1 n6 v# L
        for word in segment.words:( Z  e  H; b# j/ u  _. t/ N% ^' t$ N+ c
               
& {3 |% U- l& \----------------------------------------
$ g: n4 {$ X1 r- N* l  Z0 n/ o. I
5 Z. |5 p/ I6 j0 q3 R6 m3 q: ?代码说明:
  N" Z2 `3 x0 }$ c: l; v4 c1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。& i* P8 F8 P+ |: _. @
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
, g: ?* k% u: p2,segment 本身是很粗糙的,做字幕勉强能用。- Q0 f- C: B- x+ j6 W5 ~& f& w& Z1 S
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
! H# o3 m& S0 _' U2 @0 l* b2 j4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中- m" _* I2 W6 e$ n
比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。( j0 ]' ^% _$ U# |. \9 t
5,model.transcribe 中参数说明:0 w" c  |- S; z6 C* E+ i9 X% u* r3 p! V
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数( l  X: R# P9 N/ r) [5 K  D; s' N
其中
/ d# @& F) N  q    word_timestamps=True,
1 H, T+ d1 ^0 r# ]( q- t保证了你能拿到 word,否则是拿不到的
' j7 z  @1 K9 s& y# I" F4 b3 m  O5 n    initial_prompt = "Hello, welcome to my lecture.")
. r4 N% s5 P6 _  j+ S/ m保证能尽可能准确的断句 punctuation,但是不是决定性的。/ `% c" S. @  ~, {) ?: P# v) P7 N. B2 e
其他参数可参考源文件:
- N" `: K+ A) M( X0 v: X9 ahttps://github.com/guillaumekln/ ... isper/transcribe.py
8 |7 R6 ?0 d. w  L8 o+ N152 def transcribe(  {. Q3 P6 K. g3 r
从源文件你可以看到是支持中文的句号断句的。/ T: J  v$ _6 L: T+ _
: p( b1 v8 F8 g' P7 ~
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。& C- P/ T8 d3 A1 S: e
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。0 t' e! m+ k1 X  n* I; w
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。/ t% n( w$ V8 j2 B! q; b, @

  l' c: c2 L7 F8 S* S2 \* v
6 I2 ?9 c0 g: V' E5 c3 X9 q- ]. x* m. e  D& Q* i

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-9-8 14:01 , Processed in 0.055659 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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