设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
- [2 F' S; ?: H
. k5 W- ^% f# u3 m" s借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。4 b, _# o' Q1 {% K4 M
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。  i; z+ o& l# i  B+ f1 u
----------------------------------------, ?' A  H" a1 L( S! T
显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
- j# j. ~5 e3 h/ b( A  h, a- ?在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。& D- I% I; g# z7 c
----------------------------------------4 C6 D) n$ @/ u( Y/ T% j$ D
https://github.com/guillaumekln/faster-whisper! _6 @1 a( Y+ l& I- L# r/ {
安装如下:
/ J; a/ @; Z5 J$ ?$ p! W1, Windows 10
9 G' I; V) j# g. x0 c7 b! t9 O7 t2, Python 3.10.11
% \- [! t. V) N, k7 R0 F, z! H3, CUDA 12.1
- [$ g7 H2 D2 k; W4 f, ]4, 在python 3 中安装5 ?* p) k: r" ~
pip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117& U3 e0 i, t1 p5 }' V1 v
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。
% Z8 F/ ]9 {+ C) f/ f5,pip install -U openai-whisper
. R. s  D2 q- B  {- N; O8 A这是向whisper 致敬,可以不装  h  x: D# s( `6 w6 v
6,pip install faster-whisper! c( ~5 Q% p+ x3 s" d7 Z- M7 Q, d
----------------------------------------
6 W6 V: ~! J# [& M% ]whisper 我用的命令行,faster-whisper 我用的是python。1 y/ T; F. g+ a: I( f) B( Q
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:- H8 e; c8 n6 \1 A- {1 h! ]% T

7 z3 q$ l' w; q1 w: w----------------------------------------
' [7 |4 j6 k5 I- E1 s' X2 Q. b1 ~! @1 X, \3 b& `( L4 r
from faster_whisper import WhisperModel
" B( d8 H# d5 ?( m0 d: F3 u" \) ^/ r* U0 w3 r! i
model_size = "small") ?  O" Q( B8 _$ l; }' _8 N
. }* ?! t  f3 K* a6 v" s
model = WhisperModel(model_size, device="cuda", compute_type="int8")
2 ~9 _! B# R- B5 N" |
1 f) ]: F- A) csegments, info = model.transcribe(. M7 p0 }. u/ e% U- s
    sourceFileName, , l2 d. K! f; d  [
    beam_size=5,
. h0 J: V& a  s7 `; |2 n6 l8 f    language="en", 2 Y$ G5 t  a8 k4 {  |3 ~0 ]
    task="transcribe", ; t! x9 q4 ~9 B* C- E
    word_timestamps=True, " h2 M" |8 ]# \! Y
    initial_prompt = "Hello, welcome to my lecture.")6 ]; X  r: b, D. _

* m: G% g( N5 Q" J; A, @3 m: jfor segment in segments:" q  @# @  L% Y3 V
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))1 q) Z8 D1 Q5 J2 a

' c7 S4 Y# v- k  c8 n" F) {6 n* }        for word in segment.words:
) f  F! t. Z( Z& p3 N1 t               
/ ~* e# v1 p( x9 w9 q# n  V----------------------------------------% K, @; x( I6 [/ u

8 }/ Y5 p6 |& a9 a5 w) G代码说明:! T7 z1 v# ]. w& }
1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。- T7 @: l2 U% |$ ~
但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。# r0 H$ v+ ?( X5 J) R' G7 g' N: F
2,segment 本身是很粗糙的,做字幕勉强能用。- U  p  S1 j: Q( _: \
3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
) N) I6 Q# ]+ g( c3 ]/ G4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
5 ]. W7 |) x2 G比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
- M) q. p0 A1 a2 D2 y5,model.transcribe 中参数说明:" A7 F, I! U- ?1 w3 \; X( [& U4 Q
你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
! G8 [* j7 L/ |: \其中
3 |# f6 `( |# V) D    word_timestamps=True, 2 o" S6 W  m7 ?- _+ l- c
保证了你能拿到 word,否则是拿不到的, L, [8 ^3 j& m1 `2 p+ W( E
    initial_prompt = "Hello, welcome to my lecture.")
7 x) J4 h& ^1 Y9 H- ^- x+ r  ?+ Y保证能尽可能准确的断句 punctuation,但是不是决定性的。
0 G) A9 o; _0 W" w6 _其他参数可参考源文件:
' e8 L4 d7 s! W' Bhttps://github.com/guillaumekln/ ... isper/transcribe.py4 _) ?! u: {# [/ M$ f* S
152 def transcribe(( B- S# H7 M7 D" `" l
从源文件你可以看到是支持中文的句号断句的。7 p! r4 c, e/ T/ F1 r0 s

7 g! {# A3 H# F* z8 l2 i6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
8 ^2 O/ k  l( [2 P- Z& q7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。( }8 B& _3 H5 M
8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。
; P; n$ W1 O$ H1 v+ \) p, t, J- D7 @9 [% t: h8 W
% O7 z' ]+ J$ c( J- z5 _. ^( v9 C

, a  c  m# |  l7 Y8 B4 C- T" T# y

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-9-21 18:55 , Processed in 0.058728 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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