设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
3 P/ n2 j4 ]# u$ P1 G
. R7 H) t7 A% n$ U+ i1 |借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
5 q1 d  ]* }) N8 p) Y# `8 C效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。  r/ ]( x: |$ X! H6 ^" i
----------------------------------------
9 x$ e/ g# j' P7 _) b. ?' B显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
6 i' E1 e1 G# Q  \; r4 G1 V4 W在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
  e4 U. B6 l4 K+ G8 z5 Q. z----------------------------------------1 E' v7 a8 p9 F& c: M% v1 K2 L
https://github.com/guillaumekln/faster-whisper
+ N8 v& \! _6 h! {! s0 |安装如下:
# B, B5 \$ f5 p% g/ u' t/ g' m1, Windows 10
. F/ B: G/ Z% a6 l5 O2, Python 3.10.112 u* x- Z! C4 `# b0 N' K- V
3, CUDA 12.1- c" |. x5 O, g2 Q% g
4, 在python 3 中安装
6 u8 y0 @4 E0 x/ [0 r/ epip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1175 G9 n; ?- R1 q3 g1 a( d' W0 i3 Q
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。8 U* f; |" T  T$ ?
5,pip install -U openai-whisper
5 P! _6 Q, ?/ w- ]) l1 @" |/ i这是向whisper 致敬,可以不装# E* y4 S: O3 e% b9 [
6,pip install faster-whisper
+ D5 ^3 q$ Y' p1 t----------------------------------------
1 Q. k0 [$ }: L5 V( awhisper 我用的命令行,faster-whisper 我用的是python。  L% V: b0 t! O7 {: a! ]
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:# s  v# _3 H' _0 R3 Q" c

  G& {6 _, x/ I. f! {/ T' g----------------------------------------
: G. o( J: q0 w, p  V/ Q- W* w- ?0 {9 A, l  \4 Y# W
from faster_whisper import WhisperModel
7 Z1 E5 f. s; k" |; k6 b* G+ X; E: W
model_size = "small". G9 B% Z2 T4 c! _2 v2 g
; w- G" O1 i7 r1 }3 t& Z5 S7 p
model = WhisperModel(model_size, device="cuda", compute_type="int8")
* v2 l% v5 a+ H$ s
' H1 P+ c" a1 s  jsegments, info = model.transcribe(# [! w4 \, l# e1 r. R
    sourceFileName, ( m% Z  R. q8 Z  ~; s
    beam_size=5,
* I4 \5 f  D% a" o1 U% m. [    language="en", : R1 F: G4 R) n. u- I  A9 v7 j
    task="transcribe",
0 z$ {! \2 R4 b4 \6 y6 j    word_timestamps=True, 5 C7 L, l' e- S
    initial_prompt = "Hello, welcome to my lecture.")
' o# A- P7 Z- P0 h, J# u3 T/ _% E
' f9 c& j1 Q; i4 Xfor segment in segments:
- |5 j6 p: B8 w* \8 U) H    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
( p  k4 i  e4 h# C+ p0 T/ z  I) t* ]( n$ t& c
        for word in segment.words:. r3 W9 Z& g5 z+ G+ O
                & h: T0 }9 T$ w: ^0 D
----------------------------------------1 W' L6 N2 ]5 E% A: \
/ K& G4 ^3 u4 F- e3 n
代码说明:& w3 o7 M5 y# c. p# o5 Y' p( Z% G
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。* q) K. ?. {+ j7 d! o; Y% H
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
5 ?4 t% g2 H% U' X7 [2,segment 本身是很粗糙的,做字幕勉强能用。
4 S9 T7 Y$ M# Y3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。7 _) L$ g. W" J0 s7 C
4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
+ n( z: B7 Q: A比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
/ u/ z6 d+ p! H6 O7 D' S5,model.transcribe 中参数说明:) p/ A: y" a- U
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
( \1 U6 t1 H  \! d; d其中
. h/ f/ n* w9 M  L' X6 z7 h    word_timestamps=True, , U* V, Z8 }4 Z" o, [/ |5 M
保证了你能拿到 word,否则是拿不到的
) c! @8 D0 }# h! W/ q$ H    initial_prompt = "Hello, welcome to my lecture.")
2 v- B0 d+ [' Q0 ~) x/ q保证能尽可能准确的断句 punctuation,但是不是决定性的。- w% |. Z, l0 G2 z# W
其他参数可参考源文件:
# r# F3 M% P. s6 y- I9 r7 Ghttps://github.com/guillaumekln/ ... isper/transcribe.py
$ i! s: @' V6 q0 D7 A- P152 def transcribe(. ^7 q, Q& F. N& r% _* g
从源文件你可以看到是支持中文的句号断句的。+ j9 v2 q. O( j! _) h3 ^  }/ L0 K
5 s  `) {" D! R( [* v1 p
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。! ^; A) k. ^# h( V' k# K* W7 D$ H
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。; \( R& N  E3 k* u9 f. s' V% H" V
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。* N3 _% H9 k4 g4 z+ q6 F9 N0 b) R% E
! V3 Z  o1 W; U" C$ T
. n* c! n! l; `3 b

, b& h* j* S) m" f" v

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-7-21 17:18 , Processed in 0.065151 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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