lhotse

lhotse

Python语音数据处理库 支持灵活高效操作

Lhotse是一个开源Python库,为语音和音频数据处理提供灵活易用的解决方案。它具备标准数据准备流程、PyTorch数据集接口、高效I/O处理和存储优化等功能。Lhotse创新性地引入音频切片概念,实现混音、截断和填充等操作,并支持预计算和实时特征提取。作为新一代Kaldi语音处理库的组成部分,Lhotse与k2库协同工作,为语音处理任务提供全面支持。

Lhotse语音处理数据准备PyTorch音频处理Github开源项目
<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/934959d3-93a1-47f3-a1bc-f90c2b1efcfd.png" width=376>

PyPI 状态 Python 版本 PyPI 状态 构建状态 文档状态 codecov 代码风格:black 在 Colab 中打开 arXiv

</div>

Lhotse

Lhotse 是一个 Python 库,旨在使语音和音频数据准备更加灵活,并让更广泛的社区可以使用。与 k2 一起,它是下一代 Kaldi 语音处理库的一部分。

教程演示和材料

关于

主要目标

  • 通过以 Python 为中心的设计吸引更广泛的社区参与语音处理任务。
  • 为经验丰富的 Kaldi 用户提供富有表现力的命令行界面
  • 为常用语料库提供标准数据准备方案
  • 为语音和音频相关任务提供 PyTorch 数据集类
  • 通过音频切片的概念实现灵活的模型训练数据准备。
  • 高效性,特别是在 I/O 带宽和存储容量方面。

教程

我们目前在 examples 目录中提供了以下教程:

  • 基本的完整 Lhotse 工作流程 Colab
  • 使用切片转换数据 Colab
  • WebDataset 集成 Colab
  • 如何组合多个数据集 Colab
  • Lhotse Shar:为顺序 I/O 和模块化优化的存储格式 Colab

使用示例

查看以下链接,了解 Lhotse 的实际应用:

  • Icefall 方案:k2 和 Lhotse 的结合。
  • 最小 ESPnet+Lhotse 示例:Colab

主要理念

与 Kaldi 类似,Lhotse 提供标准数据准备方案,但通过特定任务的数据集类扩展了与 PyTorch 的无缝集成。数据和元数据以人类可读的文本清单形式表示,并通过方便的 Python 类向用户公开。

图片

Lhotse 引入了音频切片的概念,旨在简化训练数据构建,支持即时混合、截断和填充等操作,以最大限度地减少所需的存储量。数据增强和特征提取既支持预计算模式(将高度压缩的特征矩阵存储在磁盘上),也支持即时模式(按需计算转换)。此外,Lhotse 还引入了特征空间切片混合,以充分利用两种模式的优势。

图片

安装

Lhotse 支持 Python 3.7 及更高版本。

Pip

Lhotse 可在 PyPI 上获得:

pip install lhotse

要安装最新的未发布版本,请执行:

pip install git+https://github.com/lhotse-speech/lhotse

开发安装

对于开发安装,您可以 fork/clone GitHub 仓库并使用 pip 安装:

git clone https://github.com/lhotse-speech/lhotse
cd lhotse
pip install -e '.[dev]'
pre-commit install  # 安装带有样式检查的预提交钩子

# 运行单元测试
pytest test

# 运行代码风格检查
pre-commit run

这是一个可编辑安装(-e 选项),意味着对源代码的更改在导入 lhotse 时会自动反映(无需重新安装)。[dev] 部分表示您正在安装用于运行测试、构建文档或启动 jupyter 笔记本的额外依赖项。

环境变量

Lhotse使用几个环境变量来自定义其行为。它们如下:

  • LHOTSE_REQUIRE_TORCHAUDIO - 当设置为非"1|True|true|yes"时,我们不会检查是否安装了torchaudio,并将其从依赖中移除。这会禁用Lhotse的许多功能,但基本能力仍会保留(包括使用soundfile读取音频)。
  • LHOTSE_AUDIO_DURATION_MISMATCH_TOLERANCE - 用于从文件加载音频时收到的样本数与Recording.num_samples中声明的不同的情况。这有时是必要的,因为不同的编解码器(甚至同一编解码器的不同版本)在解码压缩音频时可能使用不同的填充。通常值最高到0.1,甚至0.3(秒)仍然合理,超过这个范围则表示存在严重问题。
  • LHOTSE_AUDIO_BACKEND - 可以设置为CLI lhotse list-audio-backends返回的任何值,以覆盖默认的试错行为,始终使用特定的音频后端。
  • LHOTSE_AUDIO_LOADING_EXCEPTION_VERBOSE - 设置为1时,当每个可用的音频后端都无法加载给定文件时,我们将发出完整的异常堆栈跟踪(它们可能非常大)。
  • LHOTSE_DILL_ENABLED - 当设置为1|True|true|yes时,我们将启用基于dillCutSetSampler跨进程序列化(即使安装了dill,默认也是禁用的)。
  • LHOTSE_LEGACY_OPUS_LOADING - (=1)恢复到旧的OPUS加载机制,该机制为每个OPUS文件触发一个新的ffmpeg子进程。
  • LHOTSE_PREPARING_RELEASE - 开发人员在发布Lhotse新版本时内部使用。
  • TORCHAUDIO_USE_BACKEND_DISPATCHER - 当设置为1且torchaudio版本低于2.1时,我们将启用torchaudio的实验性ffmpeg后端。
  • AIS_ENDPOINT 由AIStore客户端读取以确定AIStore端点URL。AIStore数据加载需要此设置。
  • RANKWORLD_SIZEWORKERNUM_WORKERS在内部用于通知Lhotse Shar数据加载子进程。
  • READTHEDOCS在内部用于文档构建。

可选依赖

其他pip包。 你可以通过安装相关支持包来利用Lhotse的可选功能,如下所示:pip install lhotse[package_name]。支持的可选包包括:

  • pip install lhotse[kaldi]以获得与Kaldi兼容性相关的最大功能集。它包括kaldi_native_iokaldi_io的更高效变体)和kaldifeat等库,这些库将部分Kaldi功能移植到Python中。
  • pip install lhotse[orjson]以获得最高50%更快的JSONL清单读取速度。
  • pip install lhotse[webdataset]。我们支持将数据"编译"成WebDataset tarball格式以实现更高效的IO。你仍然可以像操作常规懒加载CutSet一样与数据交互。要了解更多信息,请查看以下教程:Colab
  • pip install h5py如果你想提取语音特征并将它们存储为HDF5数组。
  • pip install dill。安装dill后,我们将使用它来pickle在.map.filter等调用中使用lambda函数的CutSet。这在使用num_jobs>0的PyTorch DataLoader中很有帮助。没有dill,根据你的环境,你将看到异常或脚本挂起。
  • pip install aistore以使用AIStore支持的URL从AIStore读取清单、tar文件和其他数据(设置AIS_ENDPOINT环境变量以激活它)。有关更多详细信息,请参阅AIStore文档
  • pip install smart_open以在任何smart_open支持的位置(例如云、http)读写清单和数据。
  • pip install opensmile用于使用OpenSmile工具包的Python包装器进行特征提取。

sph2pipe。 要读取使用ffmpeg和sox不支持的编解码器压缩的旧LDC SPHERE (.sph)音频文件,请运行:

# CLI
lhotse install-sph2pipe

# Python
from lhotse.tools import install_sph2pipe
install_sph2pipe()

它会将其下载到~/.lhotse/tools,编译它,并自动在PATH中注册。Lhotse应该能自动检测并使用该程序。

示例

我们有示例配方,展示如何准备数据并在Python中将其作为PyTorch Dataset加载。 它们位于examples目录中。

以下是一个简短的代码片段,展示Lhotse如何使音频数据准备变得快速而简单:

from torch.utils.data import DataLoader from lhotse import CutSet, Fbank from lhotse.dataset import VadDataset, SimpleCutSampler from lhotse.recipes import prepare_switchboard # 从原始语料库分发准备数据清单。 # RecordingSet描述了有关音频录音的元数据; # 采样率、通道数、持续时间等。 # SupervisionSet描述了有关监督片段的元数据: # 转录文本、说话人、语言等。 swbd = prepare_switchboard('/export/corpora3/LDC/LDC97S62') # CutSet是Lhotse的主力,允许灵活的数据操作。 # 我们通过以窗口方式遍历SWBD录音来创建5秒的切片。 # 此时实际上没有将任何音频数据加载到内存或存储到磁盘。 cuts = CutSet.from_manifests( recordings=swbd['recordings'], supervisions=swbd['supervisions'] ).cut_into_windows(duration=5) # 我们计算对数梅尔滤波器能量并将其存储在磁盘上; # 然后,我们将切片填充到5秒,以确保所有切片长度相等, # 因为每个录音的最后一个窗口可能持续时间较短。 # 填充将在特征加载到内存后执行。 cuts = cuts.compute_and_store_features( extractor=Fbank(), storage_path='feats', num_jobs=8 ).pad(duration=5.0) # 构造一个用于语音活动检测任务的Pytorch Dataset类: dataset = VadDataset() sampler = SimpleCutSampler(cuts, max_duration=300) dataloader = DataLoader(dataset, sampler=sampler, batch_size=None) batch = next(iter(dataloader))

VadDataset将产生一批特征和监督张量对,如下所示 - 语音大约在第一秒(100帧)开始:

image

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多