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

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

3天内不再提示

如何开发与自定义应用的音频分类模

Tensorflowers 来源:ensorFlow 作者: Luiz GUStavo Martins 2021-10-11 10:08 次阅读

在 Google I/O 大会上我们分享了一套教程,帮大家在音频方面使用机器学习。在这篇文章中,您可找到一些相关资源,帮助开发与自定义应用的音频分类模型,以及激发灵感的真实案例。

音频机器学习

“声音”和“音频“两词有时候会被混用,但是两者有一点本质上的区别,即声音是你听见的内容,而音频则是声音的电子表现形式。这就是为什么我们讨论机器学习的时候使用“音频”一词的原由。

音频机器学习可用于:

理解语音

识别乐器

对事件分类(例如:识别鸟的种类)

检测音高

生成音乐

本文我们将重点关注”音频事件分类“,这是一种常见需求,在现实生活中的应用非常多。例如 NOAA 创建了座头鲸声波探测器,再如伦敦动物学会使用音频识别来保护野生动物。

座头鲸声波探测器

https://www.blog.google/technology/ai/pattern-radio-whale-songs/

您现在就可以前往 TensorFlow Hub 体验多种音频事件分类模型(YAMNet、鲸鱼探测)。

TensorFlow Hub

https://hub.tensorflow.google.cn

YAMNet

https://hub.tensorflow.google.cn/google/yamnet/1

鲸鱼探测

https://hub.tensorflow.google.cn/google/humpback_whale/1

音频识别也完全能够在设备端运行。例如,Android 拥有一项声音通知功能,此功能可在您身边出现重要声音时推送通知。这项功能还可以检测设备正在播放哪种音乐,甚至还可以通过一个基于机器学习的音频录制器来记录设备上的对话。

声音通知

https://blog.google/products/android/new-sound-notifications-on-android/

正在播放哪种音乐

https://blog.google/products/pixel/on-device-ai-with-pixel4/

音频录制器

https://ai.googleblog.com/2019/12/the-on-device-machine-learning-behind.html

如何在自己的应用中使用这些模型?

如何根据自己的音频用例自定义这些模型?

部署设备端机器学习模型

想象一下,如果您已经拥有一个音频分类模型(例如从 TF-Hub 获取的预训练模型),您会怎样在移动应用上使用该模型?为了帮助您将音频分类集成到应用中,我们创建了 TensorFlow Lite Task Library。音频分类器组件现已发布,您只需几行代码即可将音频分类模型添加到您的应用之中:

音频分类器

https://tensorflow.google.cn/lite/inference_with_metadata/task_library/audio_classifier

// Initialization

val classifier = AudioClassifier.createFromFile(this, modelPath)

// Start recording

val record = classifier.createAudioRecord()

record.startRecording()

// Load latest audio samples

val tensor = classifier.createInputTensorAudio()

tensor.load(record);

// Run inference

val output = classifier.classify(tensor)

该库负责将音频分类模型加载到内存,以使用适当的模型规格(采样率、比特率)和分类方法创建音频录制器,并获取模型推理结果。您可以点击此处查看完整示例并获取灵感。

此处

https://github.com/tensorflow/examples/tree/master/lite/examples/sound_classification/android

自定义模型

如果您需要识别的音频事件未包含在预训练模型提供的集合中,应该怎么办?或者您需要细化事件类别,又该如何?在以上情况下,您可以使用一项名为迁移学习的技术对模型进行微调。

迁移学习

https://developers.google.com/machine-learning/glossary#transfer-learning

这一流程十分常规,您无需成为机器学习方面的专家也能做到。在此过程中,您可以使用 Model Maker 来助您一臂之力。

Model Maker

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

spec = audio_classifier.YamNetSpec()

data = audio_classifier.DataLoader.from_folder(spec, DATA_DIR)

train_data, validation_data = data.split(0.8)

model = audio_classifier.create(train_data, spec, validation_data)

model.export(models_path)

您可以点击此处查看完整代码。输出模型可使用 Task Library 直接加载。另外,Model Maker 不仅能够自定义音频模型,还可以自定义图像、文本以及推荐系统的模型。

此处

https://tensorflow.google.cn/lite/tutorials/model_maker_audio_classification

总结

音频机器学习是一个令人兴奋的领域,具备许多可能性,同时支持不少新功能。借助 TensorFlow Lite Task Library 等工具,在设备端使用机器学习 变得越来越简单便捷。有了 Model Maker,无需领域专业知识也可进行自定义。

您可以在我们有关设备端机器学习的新网站中了解详情(点击此处可前往音频路径)。您将找到教程、代码 等相关资源,这些资源不仅包括如何处理音频相关的任务,还包括图像(分类、目标检测)以及文本(分类、实体提取、问答)等。

设备端机器学习

https://developers.google.com/learn/topics/on-device-ml

此处

https://developers.google.com/learn/pathways/on-device-ml-5

您还可以在社交网络帖子中添加 #TensorFlow 标签,与我们分享您在项目中创建的内容,或者将其提交参加 TensorFlow Community Spotlight 计划。如果有任何疑问,欢迎在 discuss.tensorflow.google.cn 上提问。

discuss.tensorflow.google.cn

https://discuss.tensorflow.google.cn/

责任编辑:haq

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

    关注

    29

    文章

    2880

    浏览量

    81577
  • 机器学习
    +关注

    关注

    66

    文章

    8420

    浏览量

    132682

原文标题:如何轻松部署设备端音频机器学习?

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

收藏 人收藏

    评论

    相关推荐

    创建自定义的基于闪存的引导加载程序(BSL)

    电子发烧友网站提供《创建自定义的基于闪存的引导加载程序(BSL).pdf》资料免费下载
    发表于 09-19 10:50 0次下载
    创建<b class='flag-5'>自定义</b>的基于闪存的引导加载程序(BSL)

    如何创建TestStand自定义步骤

    在之前的课程中简单地介绍过TestStand自带的一些步骤类型,如测试、消息弹窗、赋值、标签等等,这些简单的步骤从TestStand的插入选版中就可以添加到序列中。那么在使用中如果碰到需要实现更加灵活、复杂的功能,使用自带的一些步骤类型可能难以满足,这时就需要使用到自定义步骤。
    的头像 发表于 09-11 14:46 1122次阅读
    如何创建TestStand<b class='flag-5'>自定义</b>步骤

    开发用于将四个ADC通道连接到MCU/MPU的自定义多通道SPI

    电子发烧友网站提供《开发用于将四个ADC通道连接到MCU/MPU的自定义多通道SPI.pdf》资料免费下载
    发表于 09-02 10:12 0次下载
    <b class='flag-5'>开发</b>用于将四个ADC通道连接到MCU/MPU的<b class='flag-5'>自定义</b>多通道SPI

    EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划

    EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划。
    的头像 发表于 08-15 11:49 642次阅读
    EtherCAT运动控制器PT/PVT实现用户<b class='flag-5'>自定义</b>轨迹规划

    NVIDIA NeMo加速并简化自定义模型开发

    如果企业希望充分发挥出 AI 的力量,就需要根据其行业需求量身定制的自定义模型。
    的头像 发表于 07-26 11:17 759次阅读
    NVIDIA NeMo加速并简化<b class='flag-5'>自定义</b>模型<b class='flag-5'>开发</b>

    如何在IDF框架中使用自定义的静态库和动态库?

    基于商业需要,我们需要在 ESP-IDF v4.0-rc 这个版本的IDF中开发与使用自定义库,有如下问题请协助: 1如何利用IDF框架编写自定义静态库和动态库? 2如何在IDF框架中使用自定
    发表于 06-25 07:57

    【AWTK使用经验】如何自定义combo_box下拉框样式

    AWTK是基于C语言开发的跨平台GUI框架。《AWTK使用经验》系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何加载外部资源?如何设计自定义进度条?这些都会在系列文章进行解答。假设
    的头像 发表于 05-23 08:25 464次阅读
    【AWTK使用经验】如何<b class='flag-5'>自定义</b>combo_box下拉框样式

    HarmonyOS开发案例:【 自定义弹窗】

    基于ArkTS的声明式开发范式实现了三种不同的弹窗,第一种直接使用公共组件,后两种使用CustomDialogController实现自定义弹窗
    的头像 发表于 05-16 18:18 1376次阅读
    HarmonyOS<b class='flag-5'>开发</b>案例:【 <b class='flag-5'>自定义</b>弹窗】

    AWTK 开源串口屏开发(18) - 用 C 语言自定义命令

    编写代码即可实现常见的应用。但是,有时候我们需要自定义一些命令,以实现一些特殊的功能。本文档介绍如何使用C语言自定义命令。1.实现hmi_model_cmd_t接口
    的头像 发表于 05-11 08:24 449次阅读
    AWTK 开源串口屏<b class='flag-5'>开发</b>(18) - 用 C 语言<b class='flag-5'>自定义</b>命令

    TSMaster 自定义 LIN 调度表编程指导

    LIN(LocalInterconnectNetwork)协议调度表是用于LIN总线通信中的消息调度的一种机制,我们收到越来越多来自不同用户希望能够通过接口实现自定义LIN调度表的需求。所以在
    的头像 发表于 05-11 08:21 682次阅读
    TSMaster <b class='flag-5'>自定义</b> LIN 调度表编程指导

    HarmonyOS开发案例:【UIAbility和自定义组件生命周期】

    本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility,描述了Create、Foreground、Background、Destroy四种生命周期。对于页面
    的头像 发表于 05-10 15:31 1255次阅读
    HarmonyOS<b class='flag-5'>开发</b>案例:【UIAbility和<b class='flag-5'>自定义</b>组件生命周期】

    HarmonyOS实战开发-深度探索与打造个性化自定义组件

    今天分享一下 什么是自定义组件?及其自定义组件的实战。 做过前端或者android开发的都知道自定义组件,鸿蒙中显示在界面上的UI都称为组件,小打一个按钮,再到一个列表。 鸿蒙提供的组
    发表于 05-08 16:30

    HarmonyOS开发实例:【自定义Emitter】

    使用[Emitter]实现事件的订阅和发布,使用[自定义弹窗]设置广告信息。
    的头像 发表于 04-14 11:37 1007次阅读
    HarmonyOS<b class='flag-5'>开发</b>实例:【<b class='flag-5'>自定义</b>Emitter】

    鸿蒙ArkUI实例:【自定义组件】

    组件是 OpenHarmony 页面最小显示单元,一个页面可由多个组件组合而成,也可只由一个组件组合而成,这些组件可以是ArkUI开发框架自带系统组件,比如 `Text` 、 `Button` 等,也可以是自定义组件,本节笔者简单介绍一下
    的头像 发表于 04-08 10:17 647次阅读

    鸿蒙开发UI界面——@ohos.font (注册自定义字体)

    字体管理中注册自定义字体。 系统能力: SystemCapability.ArkUI.ArkUI.Full 参数: 参数名 类型 必填 说明 options FontOptions 是 注册的自定义
    的头像 发表于 02-22 16:22 739次阅读