设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑 ( ?% f3 S8 |1 D8 y2 o" h  _

/ J' \$ F6 B( ?- y4 ]  w8 S借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
/ D# d4 x% v, N& R, l效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。5 A, o7 V: u, u2 o
----------------------------------------5 A; O! M  c: R
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。$ X, `+ G( s1 i3 p- U- [1 e
在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
0 p, O2 i! \! d----------------------------------------
- v8 O4 Q6 f# ^4 M# x7 uhttps://github.com/guillaumekln/faster-whisper
, L; Y0 j- V% b$ C  r安装如下:8 L- l- U7 s; K0 y: U' Z% d" a
1, Windows 10, }$ \- ]& R7 Z9 X' \
2, Python 3.10.11$ l7 C3 E' Y7 f2 ~6 m% s
3, CUDA 12.1( h3 t1 y0 H, H7 \
4, 在python 3 中安装* b4 E/ ~) k* v- ]* Q) ?
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
2 b# i& Z- P1 ~  B这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。7 `$ y' D6 T: X0 M! ^8 J
5,pip install -U openai-whisper# Q4 ~/ T" E0 U# Q& Z
这是向whisper 致敬,可以不装
5 i& k3 P# Z6 [/ H* r% `6,pip install faster-whisper
# O; j7 r0 y! X" X  P! e8 L----------------------------------------+ z" ?/ X# X1 b1 y# e$ z. c
whisper 我用的命令行,faster-whisper 我用的是python。. M/ v3 e: k: y, m
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
* f$ h6 J4 b9 d2 R5 D/ n4 H3 H& g9 P" q) g6 G. D
----------------------------------------
# G7 ^: E. v5 V. ^7 y6 ^- D7 A
/ ]7 U: Y* W; \from faster_whisper import WhisperModel) v7 F& W( x7 H  Q" G) q! d

: ^( K) Z& c& B& Z) Omodel_size = "small"" M, f% P" z- `" H
' o' J0 H0 w, T3 o$ q
model = WhisperModel(model_size, device="cuda", compute_type="int8")" d. |) U$ [6 C7 Y
1 G' V# p1 M$ l6 a6 E, `4 Y% E* }4 }
segments, info = model.transcribe(0 u( V3 B$ y: R$ h; c# Z
    sourceFileName, ' Y8 a" _4 S& P. c
    beam_size=5, $ M# `1 t. o( ]' i6 q% _
    language="en", 7 U% G1 @6 R! ]& q/ m; a: s
    task="transcribe", - X6 b2 ~+ q" z- m9 f1 n* q
    word_timestamps=True,
! M# Z1 f7 ~& C- I/ p' K. W    initial_prompt = "Hello, welcome to my lecture.")
+ z3 Q9 s1 {9 w- Z9 n; V+ m) c( E( n9 z) {, q% q
for segment in segments:! B) E+ h' W& o4 Y) a: o
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))  C; K$ ~/ p, U) u, }) K
1 P  H# d7 k+ D' q
        for word in segment.words:6 b+ {6 U$ V4 b6 F- Z
                * ?1 E2 K8 p; @% ]3 O
----------------------------------------7 k! J2 I# x# P3 @0 Z0 s4 E% @7 {

6 ?' B3 T/ z0 z& ^6 P  ]代码说明:
1 Q, H+ w3 r% x1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
2 P, d1 E" @) N# T4 }但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。6 D; J& s- d* X" K! S
2,segment 本身是很粗糙的,做字幕勉强能用。) X4 X! E, y+ m  V* r7 o
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
8 \3 O/ _+ u( t4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
* d: D5 }1 V' c9 c& F$ V比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。! _3 e' P8 H# z8 P/ k
5,model.transcribe 中参数说明:1 Y1 P/ @: o% k3 N
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数7 n* m" N, W! o: K* K
其中* Y. A) f/ y5 T4 o5 K% G% k
    word_timestamps=True, . i3 M: D) x$ J7 h
保证了你能拿到 word,否则是拿不到的
  x5 v+ o% _2 L6 N1 a/ _: N    initial_prompt = "Hello, welcome to my lecture.")
# `) @/ b; `9 R保证能尽可能准确的断句 punctuation,但是不是决定性的。
7 |$ L  [) \; U其他参数可参考源文件:: J7 R' _; F7 v- b
https://github.com/guillaumekln/ ... isper/transcribe.py
5 {6 ~% x( Z8 O2 \152 def transcribe(
& T$ t& |( u, B$ ~" K/ F从源文件你可以看到是支持中文的句号断句的。
/ a3 B. O( W: ], _& x4 z* x1 i2 ~4 _4 T# t( {+ V- A0 _
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。$ y8 E- |! I7 [- V9 b( `
7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
/ r# o. A/ e* {3 [, c. L8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。4 y8 m; U& a, `
9 H" ~3 O. F) e6 ]/ ]5 V% J- k

7 U6 O, G  l9 D/ c) W, p/ _; x1 w2 Y

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2025-5-9 18:23 , Processed in 0.033644 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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