当前位置:   article > 正文

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

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

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

  1. pip install paddlespeech
  2. 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最上边。

  1. import os
  2. 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有余。

下边是我的测试代码:

  1. import os
  2. import time
  3. # cuda 11.8 对应 faster-whisper==0.10.1
  4. # 最新版的faster-whisper只支持cuda 12
  5. os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'
  6. from faster_whisper import WhisperModel
  7. model_size = "large-v3"
  8. path = r"xxxxx\pt_model\models--Systran--faster-whisper-large-v3\snapshots\edaa852ec7e145841d8ffdb056a99866b5f0a478"
  9. # Run on GPU with FP16
  10. model = WhisperModel(model_size_or_path=path, device="cuda", local_files_only=True)
  11. # or run on GPU with INT8
  12. # model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")
  13. # or run on CPU with INT8
  14. # model = WhisperModel(model_size, device="cpu", compute_type="int8")
  15. start = time.time()
  16. segments, info = model.transcribe(r"xxxxx\record.mp3",
  17. beam_size=5, language="zh",
  18. vad_filter=True,
  19. vad_parameters=dict(min_silence_duration_ms=1000))
  20. print("Detected language '%s' with probability %f" % (info.language, info.language_probability))
  21. for segment in segments:
  22. print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
  23. print(time.time()-start,"use time")

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/962845
推荐阅读
相关标签
  

闽ICP备14008679号