设为首页收藏本站

爱吱声

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

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

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
 楼主| 发表于 2023-6-4 02:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nanimarcus 于 2023-6-4 02:24 编辑
& p- h- @) W8 h4 K$ J# B9 ]/ I3 {; m
借着 chatGPT 这股热潮研究了一下 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。- G7 `1 `5 ^! b: `; `9 a4 P6 A, G
效果我是很满意的,唯一不满的是速度,在六年前的主流显卡上基本上是一倍速,基本上只用在自己特别喜欢的媒体文件上了。) Q! q& F# A7 _6 {9 a
----------------------------------------
% R6 w; ?, |- G# P: I/ q3 ?显然不满意的不是我一个,活雷锋很快就出来了,名字很谦虚也很霸气 faster-whisper。
2 ?7 \/ W% v0 F) J$ w8 J* H在六年前主力显卡3G内存上,model small,能跑到12倍速,这个是相当满意了。
; P: d8 x. }' A, w2 n( l----------------------------------------' F6 j; s1 O+ K! W( H* ~9 A7 U# H
https://github.com/guillaumekln/faster-whisper
% s7 r6 X- s4 k1 B' s安装如下:; K* S$ P& F# ?$ c5 X& V1 A5 S
1, Windows 10
# U  G  \7 K2 y* m2, Python 3.10.11
4 U7 D. M6 A/ W; M3, CUDA 12.18 i" h, [& l6 s: N) e" v; Q
4, 在python 3 中安装
, h/ R( Q6 L8 S# Wpip install setuptools-rust torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1170 f* h& H% n/ [, g$ C- U. l- B+ u
这一步最后一个安装文件 cu117-cp310-cp310-win_amd64.whl 大小2343.6 MB,如果没显示,你得检查一下你的环境。, w3 E9 X" d' w7 ]$ \- N
5,pip install -U openai-whisper
8 O! z$ r+ b* X, K这是向whisper 致敬,可以不装1 l2 _" B. }& u  [, A9 @
6,pip install faster-whisper
( ~# T6 [% U- G7 h3 O----------------------------------------, o6 d# S9 v$ w# Q4 ^1 l
whisper 我用的命令行,faster-whisper 我用的是python。0 J4 i9 E$ |  J: T  O3 {# E& S, F& u  `
下面给出了部分参考代码,根据主页上的参考代码我做了修改,但这个不是能运行的代码:
. S, R& q0 u' y# J7 w( h4 C: s- L  A, I) p0 |+ a3 u
----------------------------------------* K$ y- N/ K+ s8 q5 W2 }
! U+ E- Q6 {$ a% V  l
from faster_whisper import WhisperModel
% q+ P6 u  [$ w4 a' J6 v5 ?' C% B* L6 u
model_size = "small"# [% k! V  W2 a; V1 X
# O6 [  p9 Q, E; {+ @
model = WhisperModel(model_size, device="cuda", compute_type="int8")) v2 J3 U8 A1 d5 `  K8 }7 Z, R
( c- h6 p! K* s
segments, info = model.transcribe(
8 J- o7 {  H) o; N  M    sourceFileName, 4 i* M# W; S9 I5 t9 G; W
    beam_size=5,
* {0 f  Y  [3 O/ {* q: w* N6 L    language="en",
# d+ U$ E* k; Q$ n  }8 l4 Q5 D8 V    task="transcribe",
% a( Y3 W( S6 G, [    word_timestamps=True, / Y) X$ A3 _  B/ l; {
    initial_prompt = "Hello, welcome to my lecture.")
& _' W. \5 ~. j# q3 \6 t# k
6 ^  N4 Y9 {* T% h# \for segment in segments:( B/ N7 |; W- w5 p/ v
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text)): g  E0 y" }2 y7 O0 P- \4 f

7 l  V$ f% w8 y* e        for word in segment.words:4 |$ @3 O; e3 U& J6 Q2 b
                0 U1 g, G' q5 D( l4 l
----------------------------------------" [/ u4 x9 y  q  Y8 s5 H

0 D- ^8 r# ~  K' l' y代码说明:
$ K; r( H/ S+ Z& E/ A/ h1,model.transcribe 只是建立了模型,并没有运行,运行 是从 for segment in segments: 这一句开始的。
* C( ]" O" X8 L" p% P7 g3 ]但是这一步很重要(废话),我的程序有时候会无征兆退出就是在这一步,没有任何错误信息,倒是Windows 侦测到,但也没给出有意义的信息。
2 e4 g' |* u, f$ u$ n2,segment 本身是很粗糙的,做字幕勉强能用。
- l8 u. G5 g; q+ q9 l! E9 i3 r; I7 i3,word 才是真正的精确控制的,本身带时间轴,所以要做比较好的字幕,必须用到word。
% `; |0 J  h$ J" V4,word 里面是包含标点符号的,也就是说标点符号不是独立的,是附着在前一个word中
  s; Z) o7 s5 o比如 "faster." 这个句号是和前一个单词 faster 放在同一个 word 里面的。
# A4 `) v. F5 j, n. R5,model.transcribe 中参数说明:
7 m, W' e/ u4 j0 b; F你要是对 whisper 的参数有所了解的话,基本上这些参数就是对应whisper 的参数
' {: ^, `) d: h2 E$ V5 k! w其中- P3 `; K7 k' ?) U1 p  @6 ?2 h
    word_timestamps=True, * q7 x) i$ ~7 T* {% b
保证了你能拿到 word,否则是拿不到的
2 F6 h. H' r/ p. g+ E: o. w" U6 y2 a    initial_prompt = "Hello, welcome to my lecture.")* P5 p. T9 d5 J& H
保证能尽可能准确的断句 punctuation,但是不是决定性的。
3 a/ p' L  A# M  k' J8 v其他参数可参考源文件:
3 q/ v5 }: D9 [https://github.com/guillaumekln/ ... isper/transcribe.py, G; v% i- n6 h$ L
152 def transcribe(& g! D5 q3 @) F( b0 L
从源文件你可以看到是支持中文的句号断句的。# Z: p+ S$ T5 a" o# m- J& D
5 Y' I4 u. o! I; o& R) ?
6,如果要尽可能准确的 punctuation,根本办法是用比较大的模型 medium,或者更大。
8 Z5 h1 I: S" ^# n5 S7,我自己观察一个小时之内可以保证断句准确,再长就很可能不行,所以我的办法是切割文件到一个小时,识别后再聚合,效果不错。
) t8 [+ h2 l7 [4 W9 r8,faster-whisper 会上传一些信息,检测到不停的使用网络,曾经有一次代码出错就是访问网络,你要是有洁癖就把网络暂时给关了。) r  Z5 v2 w) r- |. y1 n
% c% T7 l  u5 c; r2 _* H0 z

% `; ]1 {" E* ?& C
( C) f7 ?9 T9 N3 B" R

评分

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

查看全部评分

该用户从未签到

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

使用道具 举报

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

GMT+8, 2026-1-19 18:18 , Processed in 0.029520 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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