音频转文字哪家强?faster-whisper还是paddlespeech,我的折腾吐槽记录

前言

作为一个魔武双修的python程序员,面对产品小姐姐提出的需求。我只能迎难而上。

目前开源的音频转文字都有哪些?效果如何?速度怎么样?带着这一连串的问题,我在github的海洋里畅游良久。接下来我把我的发现都记录如下。

1. paddlespeech

其实我在去年的时候发现过这个东西,当时测试过,速度和正确率忘记了。主要印象是搭建起来挺费劲,如官方写的那样很全面,我废了大半天迷失在了csdn的报错解决文章中。

PaddleSpeech: Easy-to-use Speech Toolkit including SOTA ASR pipeline, influential TTS with text frontend and End-to-End Speech Simultaneous Translation. (gitee.com)icon-default.png?t=N7T8https://gitee.com/paddlepaddle/PaddleSpeech

稍微记录下我的搭建过程:等后续我顿悟之后我再补上。

pip install paddlespeech 

pip install paddlepaddle

 后续好像是要降低numpy版本,降版本报错了。算了,我放弃了。希望国产开源继续加油。给他们点点star。如果有知道怎么解决的老哥,欢迎留言,我再折腾。

 2. faster-whisper

faster-whisper 是使用 CTranslate2 对 OpenAI 的 Whisper 模型的重新实现,CTranslate2 是 Transformer 模型的快速推理引擎。这种实现比 openai/whisper 快 4 倍,在相同的精度下,使用更少的内存。在 CPU 和 GPU 上通过 8 位量化可以进一步提高效率。看介绍很强,下边是项目链接:SYSTRAN/faster-whisper:使用 CTranslate2 实现更快的 Whisper 转录 (github.com)

然后我发现一位老哥开源的项目,利用flask实现了带界面的识别,很强大。关键是,下载了对应权重文件后,项目跑的很丝滑。也没报错。项目地址:jianchang512/stt: Voice Recognition to Text Tool / 一个离线运行的本地语音识别转文字服务,输出json、srt字幕带时间戳、纯文字格式 (github.com)

3.关于GPU的使用

我这次的记录目的就是如何使用GPU折腾faster-whisper,这里边还是有几个注意事项的。

首先我的电脑cuda是11.8 ,我安装了torch gpu版本后,第一次出现的问题是

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. 指出的问题是,OpenMP 运行时 libiomp5md.dll 被多次初始化

代码里加上了。如果是flask项目加到start.py最上边。

import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'

第二次报错是Error: Library cublas64_12.dll is not found or cannot be loaded。经过一番搜索才知道是最新的faster-whisper只支持cuda12,如果想用11只能降低版本。

pip install faster-whisper==0.10.1

 好了项目完美运行。cuda加成下,识别速度比cpu提升10有余。

下边是我的测试代码:

import os
import time
# cuda 11.8 对应 faster-whisper==0.10.1
# 最新版的faster-whisper只支持cuda 12
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'
from faster_whisper import WhisperModel

model_size = "large-v3"

path = r"xxxxx\pt_model\models--Systran--faster-whisper-large-v3\snapshots\edaa852ec7e145841d8ffdb056a99866b5f0a478"

# Run on GPU with FP16
model = WhisperModel(model_size_or_path=path, device="cuda", local_files_only=True)

# or run on GPU with INT8
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")
# or run on CPU with INT8
# model = WhisperModel(model_size, device="cpu", compute_type="int8")
start = time.time()
segments, info = model.transcribe(r"xxxxx\record.mp3",
                                  beam_size=5, language="zh",
                                  vad_filter=True,
                                  vad_parameters=dict(min_silence_duration_ms=1000))

print("Detected language '%s' with probability %f" % (info.language, info.language_probability))

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

print(time.time()-start,"use time")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值