音频分类指南

借助 MediaPipe 音频分类器任务,您可以将音频片段归入一组定义的类别,例如吉他音乐、火车口哨或鸟叫声。这些类别是在模型训练期间定义的。此任务使用机器学习 (ML) 模型作为独立的音频片段或连续流来处理音频数据,并输出按降序概率得分排序的潜在类别列表。

试试吧!

开始使用

如需开始使用此任务,请按照适用于您的目标平台的其中一个实现指南进行操作。这些平台专用指南将引导您完成此任务的基本实现,包括推荐的模型和包含推荐配置选项的代码示例:

这些平台专用指南将引导您完成此任务的基本实现,包括推荐的模型以及包含推荐配置选项的代码示例。

任务详情

本部分介绍此任务的功能、输入、输出和配置选项。

特性

  • 输入音频处理 - 处理包括音频重采样、缓冲、取景和四维转换。
  • 标签地图语言区域 - 设置显示名称使用的语言
  • 分数阈值 - 根据预测分数过滤结果。
  • Top-k 检测 - 过滤数字检测结果。
  • 标签许可名单和拒绝名单 - 指定检测到的类别。
任务输入 任务输出
输入可以是以下数据类型之一:
  • 音频片段
  • 音频流
音频分类器会输出一个包含以下内容的类别列表:
  • 类别索引:类别在模型输出中的索引
  • 分数:此类别的置信度分数,通常为 [0,1] 之间的概率
  • 类别名称(可选):TFLite 模型元数据中指定的类别名称(如果有)
  • 类别显示名称(可选):TFLite 模型元数据中指定的类别的显示名称,采用通过显示名称语言区域选项指定的语言(如果有)

配置选项

此任务具有以下配置选项:

选项名称 说明 值范围 默认值
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 模型是使用 AudioSet 数据集训练的音频事件分类器,可预测 AudioSet 数据中定义的音频事件。如需了解此模型可识别的音频事件,请参阅模型标签列表

模型名称 输入形状 量化类型 Versions
YamNet 1 x 15600 无 (float32) 最新动态

任务基准

以下是基于上述预训练模型的整个流水线的任务基准。延迟时间结果是 Pixel 6 使用 CPU / GPU 时的平均延迟时间。

模型名称 CPU 延迟时间 GPU 延迟时间
YamNet 12.29 毫秒 -