Lhotse 是一个 Python 库,旨在使语音和音频数据准备更加灵活,并让更广泛的社区可以使用。与 k2 一起,它是下一代 Kaldi 语音处理库的一部分。
我们目前在 examples
目录中提供了以下教程:
查看以下链接,了解 Lhotse 的实际应用:
与 Kaldi 类似,Lhotse 提供标准数据准备方案,但通过特定任务的数据集类扩展了与 PyTorch 的无缝集成。数据和元数据以人类可读的文本清单形式表示,并通过方便的 Python 类向用户公开。
Lhotse 引入了音频切片的概念,旨在简化训练数据构建,支持即时混合、截断和填充等操作,以最大限度地减少所需的存储量。数据增强和特征提取既支持预计算模式(将高度压缩的特征矩阵存储在磁盘上),也支持即时模式(按需计算转换)。此外,Lhotse 还引入了特征空间切片混合,以充分利用两种模式的优势。
Lhotse 支持 Python 3.7 及更高版本。
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
时,我们将启用基于dill
的CutSet
和Sampler
跨进程序列化(即使安装了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数据加载需要此设置。RANK
、WORLD_SIZE
、WORKER
和NUM_WORKERS
在内部用于通知Lhotse Shar数据加载子进程。READTHEDOCS
在内部用于文档构建。其他pip包。 你可以通过安装相关支持包来利用Lhotse的可选功能,如下所示:pip install lhotse[package_name]
。支持的可选包包括:
pip install lhotse[kaldi]
以获得与Kaldi兼容性相关的最大功能集。它包括kaldi_native_io
(kaldi_io
的更高效变体)和kaldifeat
等库,这些库将部分Kaldi功能移植到Python中。pip install lhotse[orjson]
以获得最高50%更快的JSONL清单读取速度。pip install lhotse[webdataset]
。我们支持将数据"编译"成WebDataset tarball格式以实现更高效的IO。你仍然可以像操作常规懒加载CutSet一样与数据交互。要了解更多信息,请查看以下教程: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帧)开始:
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号