音频分类指南

鸟叫声波形叠加在鸟类照片上,波形与照片中的鸟类叫声相符。

借助 MediaPipe 音频分类器任务,您可以将音频片段分类到一系列已定义的类别,例如吉他音乐、火车汽笛或鸟鸣。类别是在模型训练期间定义的。此任务使用机器学习 (ML) 模型作为独立音频片段或连续串流来处理音频数据,并输出按概率得分从高到低排序的可能类别列表。

试试吧!

开始使用

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

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

任务详情

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

功能

  • 输入音频处理 - 处理包括音频重采样、缓冲、帧和傅里叶转换。
  • 标签映射语言区域 - 设置显示名称所用的语言
  • 得分阈值 - 根据预测得分过滤结果。
  • 前 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 时才能使用 不适用 未设置

模型

AudioClassifier 需要下载音频分类模型并将其存储在项目目录中。开始使用此任务进行开发时,请先使用针对目标平台的默认推荐模型。其他可用模型通常需要在性能、准确性、分辨率和资源要求之间进行权衡,在某些情况下,还包含额外的功能。

Yamnet 模型是一种音频事件分类器,基于 AudioSet 数据集进行训练,用于预测 AudioSet 数据中定义的音频事件。如需了解此模型识别的音频事件,请参阅模型标签列表

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

任务基准

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

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