leaf-audio
leaf-audio 是一个可学习的音频前端库,旨在替代传统的固定音频特征提取方法(如梅尔滤波器组)。在传统流程中,音频特征通常是预先设定且不可调整的,这可能无法完美适配特定的下游任务。leaf-audio 通过引入极少量的可训练参数,允许模型在初始化时近似梅尔滤波器组,随后根据具体任务数据进行微调,从而自动学习最优的音频表示方式。
这一设计有效解决了固定特征提取器灵活性不足的问题,有助于提升语音识别、音频分类等任务的性能。leaf-audio 特别适合音频领域的研究人员和开发者使用,尤其是那些希望探索端到端学习架构或优化特征提取环节的专业人士。
其技术亮点在于高度模块化与可定制性:用户不仅可以轻松切换滤波器数量、窗口大小、采样率等参数,还能选择不同类型的压缩函数(如 PCEN 或对数压缩)及初始化策略。此外,除了核心的 LEAF 前端,该库还集成了 SincNet、时域滤波器组等多种经典方案,并提供了基于 TensorFlow/Keras 的完整训练示例,方便用户快速复现论文结果或开展新实验。对于追求高效、灵活音频处理方案的团队来说,leaf-audio 是一个值得尝试的开源选择。
使用场景
某语音识别初创团队正在开发一款针对嘈杂工业环境下的设备故障音检测系统,需要从高噪声背景中精准提取微弱的异常音频特征。
没有 leaf-audio 时
- 特征表达能力受限:团队被迫使用固定的梅尔滤波器组(Mel-filterbanks),其预设的频率分布无法适配工业机器特有的高频尖锐噪音,导致关键故障信号被平滑丢失。
- 模型调优成本高:为了弥补前端特征的不足,不得不堆叠更深的后端神经网络来强行学习特征,导致训练时间长达数天且显存占用极高。
- 泛化性能不佳:固定参数的前端无法适应不同型号机器的声学差异,在新设备上的误报率居高不下,需人工反复调整预处理参数。
- 参数量与效率失衡:尝试引入 SincNet 等可学习前端时,发现其参数量过大,难以部署在边缘端的低功耗芯片上。
使用 leaf-audio 后
- 自适应特征提取:leaf-audio 以梅尔滤波器为初始值进行微调,自动学习到适合特定机器噪音的滤波器形状,显著提升了微弱故障信号的信噪比。
- 端到端高效训练:由于前端参数极少且可联合优化,整体模型收敛速度提升 40%,大幅缩短了从数据准备到模型上线的周期。
- 场景泛化能力强:针对不同设备只需微调 leaf-audio 的少量滤波器参数,即可快速迁移模型,无需重新设计整个预处理流程。
- 轻量化部署:leaf-audio 在保持高性能的同时维持了极小的参数量,顺利将模型压缩并部署至工厂现场的嵌入式网关中。
leaf-audio 通过将传统固定音频前端转化为“可学习”模块,用极低的计算代价实现了特征提取与下游任务的完美对齐。
运行环境要求
未说明(基于 TensorFlow,通常建议配备支持 CUDA 的 NVIDIA GPU 以加速训练,但 README 未明确具体型号或显存要求)
未说明

快速开始
LEAF:一种可学习的音频前端

LEAF 是一种可学习的音频特征替代方案,可用于替代梅尔滤波器组等传统特征。它可以初始化为接近梅尔滤波器组的形式,随后针对特定任务进行训练,且仅需极少量的参数。
有关该系统的完整描述,请参阅我们最近发表在 ICLR 上的论文:链接。
依赖项
- Python 3.8
- TensorFlow
- TensorFlow 数据集
- Gin
- Lingvo
内容
本库包含用于以下内容的 TensorFlow/Keras 代码:
- LEAF 前端,以及梅尔滤波器组、SincNet 和 时域滤波器组
- 用于 PANN、PCEN 和 SpecAugment 的 Keras 模型
- 使用 gin 的示例训练循环,用于在 TensorFlow 数据集上训练采用不同前端和架构的模型。
正在寻找 PyTorch 版本吗?请查看此 仓库(不由 Google Research 维护)。
安装
从仓库根目录运行以下命令:
pip3 install -e .
创建 Leaf 前端
我们提供了可学习和固定两种类型的前端,均为 Keras 模型。使用默认参数实例化 Leaf 将构建一个窗口大小为 25 毫秒、步长为 10 毫秒、压缩函数为 sPCEN、滤波器按梅尔尺度初始化的 LEAF 前端,如论文所述。为方便起见,我们还提供了时域滤波器组、SincNet 和 SincNet+ 作为 Leaf 的特殊实例,具有不同的层和初始化方式。
import leaf_audio.frontend as frontend
leaf = frontend.Leaf()
melfbanks = frontend.MelFilterbanks()
tfbanks = frontend.TimeDomainFilterbanks()
sincnet = frontend.SincNet()
sincnet_plus = frontend.SincNetPlus()
前端接收一批波形序列作为输入,并输出一批时频表示。
import tensorflow as tf
import tensorflow_datasets as tfds
dataset = iter(tfds.load('speech_commands', split='train', shuffle_files=True))
# 音频数据为 int16 格式,我们将其归一化到 [-1; 1]。
audio_sample = next(dataset)['audio'] / tf.int16.max
# 前端期望输入形状为 [B, T] 或 [B, T, C]。
audio_sample = audio_sample[tf.newaxis, :]
leaf_representation = leaf(audio_sample)
melfbanks_representation = melfbanks(audio_sample)
tfbanks_representation = tfbanks(audio_sample)
sincnet_representation = sincnet(audio_sample)
sincnet_plus_representation = sincnet_plus(audio_sample)

自定义前端架构
用户可以通过调整滤波器数量、窗口大小、压缩函数、采样率等参数,轻松构建新的 LEAF 前端。此时,应使用自定义参数实例化 Leaf。例如,以下 custom_leaf 前端与默认 LEAF 的区别在于:
- 使用 64 个滤波器而非 40 个,
- 窗口大小为 32 毫秒而非 25 毫秒,
- 音频采样率为 24kHz,
- 包含可学习的预加重层,
- 使用对数压缩而非 PCEN,
- 不包含可学习的池化层。
由于初始化依赖于采样率,我们还需重新定义 complex_conv_init。
import functools
from leaf_audio import frontend, initializers
n_filters = 64
window_len = 32
sample_rate = 24000
preemp = True
compression_fn = functools.partial(frontend.log_compression, log_offset=1e-5)
complex_conv_init = initializers.GaborInit(sample_rate=sample_rate, min_freq=60., max_freq=7800.)
learn_pooling=False
custom_leaf = frontend.Leaf(learn_pooling=learn_pooling,
n_filters=n_filters,
window_len=window_len,
sample_rate=sample_rate,
preemp=preemp,
compression_fn=compression_fn,
complex_conv_init=complex_conv_init)
训练音频分类模型
我们还提供了一个基础训练库,允许将前端与主分类架构(包括 PANN)结合,并在分类数据集上进行训练。
该库使用 Gin:common.gin 包含批量大小、分类架构等通用超参数。每个前端则有自己的 .gin 配置文件,它会继承 common.gin 中的所有超参数,并覆盖前端类的相关设置。在 leaf_custom.gin 中,我们展示了如何使用 Gin 轻松更改前端的超参数,以及主分类架构和 SpecAugment 的配置。
要训练基于梅尔滤波器组的模型:
python3 -m example.main --gin_config=example/configs/mel.gin
或基于 LEAF 的模型:
python3 -m example.main --gin_config=example/configs/leaf.gin
参考文献
如果您使用本仓库,请考虑引用以下文献:
@article{zeghidour2021leaf,
title={LEAF: A Learnable Frontend for Audio Classification},
author={Zeghidour, Neil and Teboul, Olivier and de Chaumont Quitry, F{\'e}lix and Tagliasacchi, Marco},
journal={ICLR},
year={2021}
}
请注意,这并非 Google 官方支持的产品。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备