Project Icon

WhisperS2T

高效多后端语音识别管道 实现快速精准转录

WhisperS2T是一个为Whisper模型优化的开源语音识别管道,提供更快的转录速度。它支持OpenAI原始模型、HuggingFace模型和CTranslate2模型等多种推理引擎。该项目具有集成自定义VAD模型、智能处理音频文件、支持多语言和多任务批处理等特点,并能有效减少幻觉输出。WhisperS2T在保持高准确度的同时大幅提升转录速度,为用户提供高效的语音识别解决方案。

WhisperS2T ⚡

支持多种推理引擎的优化Whisper模型语音转文字流水线!

下载量 GitHub贡献者 PyPi发布版本 问题



WhisperS2T是一个优化的闪电般快速的开源语音转文字(ASR)流水线。它专为whisper模型定制,以提供更快的whisper转录。它的设计速度比其他实现更快,比WhisperX2.3倍,比使用FlashAttention 2的HuggingFace Pipeline(Insanely Fast Whisper)快3倍。此外,它还包含几个启发式方法来提高转录准确性。

Whisper是由OpenAI开发的通用语音识别模型,而不是我开发的。它在大量多样化的音频数据集上进行训练,是一个可以执行多语言语音识别、语音翻译和语言识别的多任务模型。

发布说明

  • [2024年2月25日]:添加了预构建的docker镜像和转录导出器,支持txt, json, tsv, srt, vtt格式。(查看完整发布说明)

快速入门

查看这里提供的Google Colab笔记本:notebooks

未来路线图

  • 可直接使用的docker容器。
  • WhisperS2T-Server:优化的端到端部署就绪服务器代码库。
  • 深入的文档,使用github pages托管。
  • 探索集成Meta的SeamlessM4T模型的可能性。
  • 添加更多数据集进行WER基准测试。

基准测试和技术报告

敬请期待将WhisperS2T与其他whisper流水线进行比较的技术报告。同时,查看在A30 GPU上的一些快速基准测试。请参见scripts/目录中我使用的基准测试脚本。

A30基准测试

注意:我进行所有基准测试时将without_timestamps参数设置为True。将此参数调整为False可能会提高HuggingFace流水线的词错误率(WER),但会增加推理时间。值得注意的是,推理速度的提升仅通过更优的流水线设计实现,没有对后端推理引擎(如CTranslate2、FlashAttention2等)进行任何特定优化。例如,WhisperS2T(使用FlashAttention2)相比于HuggingFace流水线(也使用FlashAttention2)展示了明显更快的推理速度,尽管两者都利用了相同的推理引擎—带有FlashAttention2的HuggingFace whisper模型。此外,WER也存在明显差异。

特性

  • 🔄 多后端支持: 支持多种Whisper模型后端,包括原始OpenAI模型、带FlashAttention2的HuggingFace模型和CTranslate2模型。
  • 🎙️ 轻松集成自定义VAD模型: 无缝添加自定义语音活动检测(VAD)模型,以增强语音识别的控制和准确性。
  • 🎧 轻松处理大小音频文件: 智能批处理来自各种文件的较小语音片段,确保最佳性能。
  • 简化大型音频文件的处理: 在转录分段批次时异步在后台加载大型音频文件,显著减少加载时间。
  • 🌐 支持多语言/多任务解码的批处理: 在单个批次中解码多种语言或同时执行转录和翻译,提高灵活性和转录时间。(CTranslate2后端支持最佳)
  • 🧠 减少幻觉: 优化参数和启发式方法,减少重复文本输出或幻觉。(某些启发式方法仅适用于CTranslate2后端)
  • ⏱️ 动态时间长度支持(实验性): 处理给定输入批次中可变长度的输入,而不是固定的30秒,在转录过程中提供灵活性并节省计算时间。(仅适用于CTranslate2后端)

入门指南

从Docker容器

预构建容器

docker pull shashikg/whisper_s2t:dev-trtllm

Dockerhub仓库: https://hub.docker.com/r/shashikg/whisper_s2t/tags

构建自己的容器

main分支构建。

docker build --build-arg WHISPER_S2T_VER=main --build-arg SKIP_TENSORRT_LLM=1 -t whisper_s2t:main .

从特定发布版本v1.3.0构建。

git checkout v1.3.0
docker build --build-arg WHISPER_S2T_VER=v1.3.0 --build-arg SKIP_TENSORRT_LLM=1 -t whisper_s2t:1.3.0 .

要构建支持TensorRT-LLM的容器:

docker build --build-arg WHISPER_S2T_VER=main -t whisper_s2t:main-trtllm .

本地安装

安装重采样和加载音频文件所需的音频包。

对于Ubuntu

apt-get install -y libsndfile1 ffmpeg

对于MAC

brew install ffmpeg

对于Ubuntu/MAC/Windows/任何其他使用Conda的Python环境

conda install conda-forge::ffmpeg

要安装或更新到WhisperS2T的最新发布版本,请使用以下命令:

pip install -U whisper-s2t

或者从此仓库的最新提交安装:

pip install -U git+https://github.com/shashikg/WhisperS2T.git

注意: 如果您的CUDNN和CUBLAS安装是使用pip wheel完成的,您可以运行以下命令将CUDNN路径添加到LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:`python3 -c 'import os; import nvidia.cublas.lib; import nvidia.cudnn.lib; print(os.path.dirname(nvidia.cublas.lib.__file__) + ":" + os.path.dirname(nvidia.cudnn.lib.__file__))'`

使用TensorRT-LLM后端

对于TensorRT-LLM后端,您需要安装TensorRT和TensorRT-LLM。

bash <repo_dir>/install_tensorrt.sh

对于大多数debian系统,给定的bash脚本应该可以工作,如果不行/其他系统,请按照这里的官方TensorRT-LLM说明进行操作。

使用

CTranslate2后端

import whisper_s2t

model = whisper_s2t.load_model(model_identifier="large-v2", backend='CTranslate2')

files = ['data/KINCAID46/audio/1.wav']
lang_codes = ['en']
tasks = ['transcribe']
initial_prompts = [None]
out = model.transcribe_with_vad(files,
                                lang_codes=lang_codes,
                                tasks=tasks,
                                initial_prompts=initial_prompts,
                                batch_size=32)

print(out[0][0]) # 打印第一个文件的第一个话语
"""
[控制台输出]

{'text': "让我们请Phil Mackie进来,他现在在宫殿。我们看到Teresa和Philip May。Philip,你能看到他是如何从直升机上转移的吗?看起来就像你说的,那辆'野兽'。它的前灯亮着,因为太阳现在开始落山了,肯定正在云层后面下沉。它在大道上大约四分之一英里远的地方",
 'avg_logprob': -0.25426941679184695,
 'no_speech_prob': 8.147954940795898e-05,
 'start_time': 0.0,
 'end_time': 24.8}
"""

要使用词对齐功能,请使用以下方式加载模型:

model = whisper_s2t.load_model("large-v2", asr_options={'word_timestamps': True})

TensorRT-LLM后端

import whisper_s2t

model = whisper_s2t.load_model(model_identifier="large-v2", backend='TensorRT-LLM')

files = ['data/KINCAID46/audio/1.wav']
lang_codes = ['en']
tasks = ['transcribe']
initial_prompts = [None]

out = model.transcribe_with_vad(files,
                                lang_codes=lang_codes,
                                tasks=tasks,
                                initial_prompts=initial_prompts,
                                batch_size=24)

print(out[0][0]) # 打印第一个文件的第一个话语
"""
[控制台输出]

{'text': "让我们请Phil Mackie进来,他现在在宫殿。我们看到Teresa和Philip May。Philip,你能看到他是如何从直升机上转移的吗?看起来就像你说的,那辆'野兽'。它的前灯亮着,因为太阳现在开始落山了,肯定正在云层后面下沉。它在大道上大约四分之一英里远的地方", 
 'start_time': 0.0, 
 'end_time': 24.8}
"""

查看这个文档了解更多细节。

注意: 在第一次运行时,模型可能会显示较慢的推理速度。经过1-2次运行后,它将会有更好的推理速度。这是由于VAD模型的JIT跟踪导致的。

致谢

许可证

本项目采用MIT许可证 - 详见LICENSE文件。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号