0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用TensorFlow Lite快速构建移动端声音分类应用

Tensorflowers 来源:TensorFlow 作者:Khanh LeViet 2020-12-17 16:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

声音分类是机器学习任务中的一项,您向机器学习模型输入一些声音将其分类成预定义的类别,例如犬吠声、汽车鸣笛声等。目前,已有许多声音分类应用,检测非法砍伐活动、检测座头鲸的声音以更好地了解它们的自然行为。

测非法砍伐活动
https://v.youku.com/v_show/id_XMzQ4MTUxOTIxNg==.html?spm=a2hzp.8253869.0.0

检测座头鲸的声音
https://ai.googleblog.com/2018/10/acoustic-detection-of-humpback-whales.html

我们很高兴地宣布,现在 Teachable Machine 可用于训练您自己的声音分类模型,并可导出 TensorFlow Lite (TFLite) 格式模型。然后,您可以将 TFLite 模型集成到移动应用或物联网设备。这是快速运行声音分类的简便方式,分类之后,您可以在 Python 中探索构建生产模型,再将其导出到 TFLite。

Teachable Machine
https://teachablemachine.withgoogle.com/

模型架构

Teachable Machine 使用小型卷积模型对 1 秒音频样本进行分类。如上图所示,模型接收声谱图(通过傅里叶变换获取的声音的 2D 时频表示形式)。它首先会处理具有连续二维卷积层和最大池化层的声谱图。模型以多个全连接层结束,这些层与随机 dropout 层交错,用于减少训练过程中的过拟合。模型的最终输出是一个概率分数数组,要训练模型识别的每个声音类都有一个概率分数。

在 Python 中使用此方式训练您自己的声音分类模型,请查看此教程。

教程
https://tensorflow.google.cn/tutorials/audio/simple_audio

使用您自己的数据集训练模型

使用您自己的数据集训练声音分类模型有如下两种方式:

简单方式:连一行代码都不需要写,使用 Teachable Machine 收集训练数据,并且全部在浏览器中训练模型。这种方式适用于想通过交互方式快速构建原型的用户。

稳健方式:提前录制要用作训练数据集的声音,然后使用 Python 训练并认真地评估模型。当然,这种方法的自动化以及可重复性也高于简单方式。

使用 Teachable Machine 训练模型

Teachable Machine 是一款可用于创建训练数据集和训练多种机器学习模型的 GUI 工具,包括图像分类、姿态分类和声音分类。Teachable Machine 底层使用 TensorFlow.js 训练机器学习模型。您可以将训练的模型导出为 TensorFlow.js 格式,以在网络浏览器中使用,或者导出为 TensorFlow Lite 格式,以在移动应用或物联网设备中使用。

下面是训练模型的步骤:

前往 Teachable Machine(https://teachablemachine.withgoogle.com)网站

创建一个音频项目

为您想要识别的每个类别录制一些声音片段。每个类别只需要 8 秒的声音

开始训练。完成后,您就可以在实时音频源上测试您的模型

以 TFLite 格式导出模型

使用 Python 训练模型

如果录音长达几个小时或者有数十个类别,则在网络浏览器上训练声音分类可能耗时很长。在这种情况下,您可以提前收集训练数据集,将它们转换成 WAV 格式,然后使用此 Colab Notebook(包括将模型转换成 TFLite 格式的步骤)训练声音分类。Google Colab 提供免费的 GPU,帮助您大幅提升模型训练的速度。

Notebook
https://colab.research.google.com/github/tensorflow/tfjs-models/blob/master/speech-commands/training/browser-fft/training_custom_audio_model_in_python.ipynb

通过 TF Lite 将模型部署到 Android

在 TensorFlow Lite 声音分类模型训练完成后,您便可将其放到此 Android 示例应用中试用。只需按照以下步骤操作: 1. 从 GitHub 克隆示例应用:

git clone https://github.com/tensorflow/examples.git 2. 将声音分类 Android 应用导入 Android Studio。您可以在 lite/examples/sound_classification/android 文件夹中找到它。 3. 将模型(soundclassifier.tflite 和 labels.txt)添加到 src/main/assets 文件夹中,替换其中已有的示例模型。

4. 构建应用并将其部署到 Android 设备上。现在,您就可以实时对声音分类啦!

要将该模型集成到您自己的应用中,您可以将 SoundClassifier.kt 类从示例应用和已经训练的 TFLite 复制到您的应用。然后,您可以按如下方式使用该模型:

1. 从 Activity或 Fragment类初始化 SoundClassifier实例。

var soundClassifier: SoundClassifier soundClassifier = SoundClassifier(context).also { it.lifecycleOwner = context }


2. 开始从设备的麦克风捕获实时音频,并实时分类:

soundClassifier.start()

3. 作为可读类名称的映射接收实时分类结果,以及当前声音属于每个特定类别的概率。

let labelName = soundClassifier.labelList[0] // e.g. "Clap" soundClassifier.probabilities.observe(this) { resultMap -> let probability = result[labelName] // e.g. 0.7 }

未来计划

我们正在开发 iOS 版本的示例应用,它将于几周后发布。我们还会扩展 TensorFlow Lite Model Maker 以简化 Python 中声音分类的训练。敬请期待!

Model Maker
https://tensorflow.google.cn/lite/guide/model_maker

致谢

此项目由 Google 内部的多个团队联合开发。特别感谢:

Google Research:Shanqing Cai、Lisie Lillianfeld

TensorFlow 团队:Tian Lin

Teachable Machine 团队:Gautam Bose、Jonas Jongejan

Android 团队:Saryong Kang、Daniel Galpin、Jean-Michel Trivi、Don Turner

责任编辑:xj

原文标题:使用 TensorFlow Lite 快速构建移动端声音分类应用

文章出处:【微信公众号:TensorFlow】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136233
  • 移动端
    +关注

    关注

    0

    文章

    43

    浏览量

    4698
  • tensorflow
    +关注

    关注

    13

    文章

    331

    浏览量

    61855
  • TensorFlow Lite
    +关注

    关注

    0

    文章

    26

    浏览量

    804

原文标题:使用 TensorFlow Lite 快速构建移动端声音分类应用

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    释放声音的维度:高性能评估板为沉浸式音频体验快速便捷构建声场工具

    A316-V71-Game-V1是一款基于XMOS XU316技术的虚拟7.1游戏声卡评估平台,能够将立体声音频转换为虚拟7.1声道环绕声,为游戏玩家提供身临其境的音频体验,帮助精确定位游戏中的声音方向。
    的头像 发表于 09-30 14:14 332次阅读
    释放<b class='flag-5'>声音</b>的维度:高性能评估板为沉浸式音频体验<b class='flag-5'>快速</b>便捷<b class='flag-5'>构建</b>声场工具

    【上海晶珩睿莓1开发板试用体验】将TensorFlow-Lite物体归类(classify)的输出图片移植到LVGL9.3界面中

    既然调通了TensorFlow-Lite物体归类(classify)和LVGL9.3代码,那么把这两个东西结合起来也是没问题的,需要注意的是,TensorFlow-Lite是C++代码,而
    发表于 09-21 00:39

    全新Arm C1 CPU集群推动移动侧AI转型

    随着用户期待在不连接云端服务的情况下,能在移动设备上享有更好的即时响应、更智能的个性化服务,更加实时处理的体验,使其正迅速成为人工智能 (AI) 的强大载体。与此同时,随着移动 AI 体验从
    的头像 发表于 09-15 14:27 1097次阅读
    全新Arm C1 CPU集群推动<b class='flag-5'>移动</b><b class='flag-5'>端</b>侧AI转型

    【上海晶珩睿莓1开发板试用体验】TensorFlow-Lite物体归类(classify)

    目前尚未得知睿莓1开发板上面有NPU或者DPU之类的额外处理器,因此使用树莓派系列使用最广泛的TensorFlow-Lite库进行物体归类,使用CPU运行代码,因此占用的是CPU的算力。在
    发表于 09-12 22:43

    技术洞见:THEIA S1 &amp; S1 LITE 直播机实操效果真的棒!

    的专业级演播室效果。 赋能移动,重构格局 THEIA S1 LITE 致力于打造移动创作闭环: 远程协作: 通过网页 WebGUI 管理系统,导播可异地轻松接管设备调控。 随着TH
    发表于 08-25 15:39

    无法将Tensorflow Lite模型转换为OpenVINO™格式怎么处理?

    Tensorflow Lite 模型转换为 OpenVINO™ 格式。 遇到的错误: FrontEnd API failed with OpConversionFailure:No translator found for TFLite_Detection_PostP
    发表于 06-25 08:27

    Arm 公司面向移动市场的 ​Arm Lumex​ 深度解读

    面向移动市场的 ​ Arm Lumex ​ 深度解读 ​ Arm Lumex ​ 是 Arm 公司面向移动设备市场推出的新一代计算平台,隶属于其“平台优先”战略的核心布局。作为 ​ Arm 计算
    的头像 发表于 05-29 09:54 4054次阅读

    FlexBuild构建Debian 12,在“tflite_ethosu_delegate”上构建失败了怎么解决?

    /workspace/tn_debian_FlexBuild 构建/components_lsdk2412/apps/ml/tflite/tensorflow/lite/tools/cmake
    发表于 04-01 06:53

    使用Mickledore生成BSP,移动到最新版本的Scarthgap v6.6.52时,驱动程序未构建,怎么解决?

    当我使用 Mickledore 生成 BSP 时,moal.ko WIFI 驱动程序是自动构建的,并且位于 /lib/modules/ 中,并且 WIFI 可以正常工作。 当我移动到最新版
    发表于 03-27 06:49

    用树莓派搞深度学习?TensorFlow启动!

    介绍本页面将指导您在搭载64位Bullseye操作系统的RaspberryPi4上安装TensorFlowTensorFlow是一个专为深度学习开发的大型软件库,它消耗大量资源。您可以在
    的头像 发表于 03-25 09:33 963次阅读
    用树莓派搞深度学习?<b class='flag-5'>TensorFlow</b>启动!

    STM32项目分享:STM32智能语音分类垃圾桶

    01—项目简介1.功能详解STM32智能语音分类垃圾桶功能如下:1.STM32F103C8T6单片机系统板作为主控单元2.舵机驱动垃
    的头像 发表于 03-15 10:02 2399次阅读
    STM32项目分享:STM32智能语<b class='flag-5'>音分类</b>垃圾桶

    请问NanoEdge AI数据集该如何构建

    我想用NanoEdge来识别异常的声音,但我目前没有办法生成模型,我感觉可能是数据集的问题,请问我该怎么构建数据集?或者生成模型失败还会有哪些原因?
    发表于 03-10 08:20

    OpenVINO™是否与TensorFlow集成支持Raspberry Pi?

    无法确定OpenVINO™是否与 TensorFlow* 集成支持 Raspberry Pi。
    发表于 03-05 08:26

    BEM在移动开发中的应用案例

    BEM(Block Element Modifier)在移动开发中的应用案例非常广泛,它作为一种前端开发中的命名规范和架构方法,旨在提高代码的可维护性和复用性。以下是一些具体的应用案例: 1.
    的头像 发表于 02-12 17:13 833次阅读

    广和通发布Fibocom AI Stack,助力客户快速实现跨平台跨系统的侧AI部署

    、AI工具链、高性能推理引擎、海量模型、支持与服务一体化的侧AI解决方案,帮助智能设备快速实现AI能力商用。 Fibocom AI Stack 为适应不同侧场景的应用,AI Stack具备海量
    发表于 01-08 11:38 466次阅读
    广和通发布Fibocom AI Stack,助力客户<b class='flag-5'>快速</b>实现跨平台跨系统的<b class='flag-5'>端</b>侧AI部署