借助 MediaPipe 音频分类器任务,您可以将音频片段归入一组定义的类别,例如吉他音乐、火车口哨或鸟叫声。这些类别是在模型训练期间定义的。此任务使用机器学习 (ML) 模型作为独立的音频片段或连续流来处理音频数据,并输出按降序概率得分排序的潜在类别列表。
开始使用
如需开始使用此任务,请按照适用于您的目标平台的其中一个实现指南进行操作。这些平台专用指南将引导您完成此任务的基本实现,包括推荐的模型和包含推荐配置选项的代码示例:
这些平台专用指南将引导您完成此任务的基本实现,包括推荐的模型以及包含推荐配置选项的代码示例。
任务详情
本部分介绍此任务的功能、输入、输出和配置选项。
特性
- 输入音频处理 - 处理包括音频重采样、缓冲、取景和四维转换。
- 标签地图语言区域 - 设置显示名称使用的语言
- 分数阈值 - 根据预测分数过滤结果。
- Top-k 检测 - 过滤数字检测结果。
- 标签许可名单和拒绝名单 - 指定检测到的类别。
任务输入 | 任务输出 |
---|---|
输入可以是以下数据类型之一:
|
音频分类器会输出一个包含以下内容的类别列表:
|
配置选项
此任务具有以下配置选项:
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
running_mode |
设置任务的运行模式。音频分类器有两种模式: AUDIO_CLIPS:针对独立音频片段运行音频任务的模式。 AUDIO_STREAM:在音频流(例如来自麦克风)上运行音频任务的模式。在此模式下,必须调用 resultListener,以设置监听器以异步接收分类结果。 |
{AUDIO_CLIPS, AUDIO_STREAM } |
AUDIO_CLIPS |
display_names_locale |
设置任务模型元数据中提供的显示名(如果有)要使用的标签语言。英语的默认值为 en 。您可以使用 TensorFlow Lite Metadata Writer API 向自定义模型的元数据添加本地化标签。 | 语言区域代码 | en |
max_results |
设置要返回的得分最高的分类结果的数量上限(可选)。如果小于 0,将返回所有可用的结果。 | 任何正数 | -1 |
score_threshold |
设置预测分数阈值,以替换模型元数据中提供的阈值(如果有)。低于此值的结果会被拒绝。 | [0.0, 1.0] | 未设置 |
category_allowlist |
设置允许的类别名称的可选列表。如果为非空,则类别名称不在此集合中的分类结果将被滤除。系统会忽略重复或未知的类别名称。
此选项与 category_denylist 互斥,如果同时使用这两者,就会引发错误。 |
任何字符串 | 未设置 |
category_denylist |
设置不允许使用的类别名称的可选列表。如果非空,则类别名称在此集合中的分类结果将被滤除。系统会忽略重复或未知的类别名称。此选项与 category_allowlist 互斥,同时使用这两者会导致错误。 |
任何字符串 | 未设置 |
result_callback |
将结果监听器设置为在音频分类器处于音频流模式时异步接收分类结果。只能在跑步模式设为“AUDIO_STREAM ”时使用 |
N/A | 未设置 |
模型
如需使用音频分类器,您需要下载音频分类模型并将其存储在项目目录中。开始使用此任务进行开发时,请先使用适用于目标平台的默认推荐模型。其他可用模型通常会在性能、准确性、分辨率和资源要求之间进行权衡,在某些情况下,还会包含其他功能。
Yamnet 模型(推荐)
Yamnet 模型是使用 AudioSet 数据集训练的音频事件分类器,可预测 AudioSet 数据中定义的音频事件。如需了解此模型可识别的音频事件,请参阅模型标签列表。
模型名称 | 输入形状 | 量化类型 | Versions |
---|---|---|---|
YamNet | 1 x 15600 | 无 (float32) | 最新动态 |
任务基准
以下是基于上述预训练模型的整个流水线的任务基准。延迟时间结果是 Pixel 6 使用 CPU / GPU 时的平均延迟时间。
模型名称 | CPU 延迟时间 | GPU 延迟时间 |
---|---|---|
YamNet | 12.29 毫秒 | - |