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

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

3天内不再提示

研究:Magenta的微分数字信号处理

Tensorflowers 来源:TensorFlow 2020-09-27 14:46 次阅读

简介

Sounds of India 是一款独特而有趣的交互式音乐体验应用,以印度传统为灵感,并由机器学习提供支持。当用户在演唱印度歌曲时,浏览器中的机器学习模型会实时将他们通过移动设备上输入的声音转换为各种印度古典乐器的声音。

Sounds of India
https://soundsofindia.withgoogle.com/

完成整个体验的开发过程仅需 12 周,您可了解开发者在使用 TensorFlow 生态系统时,如何快速地将模型从研究阶段推进到规模化生产。

研究:Magenta 的微分数字信号处理

Magenta 是 Google AI 中的一个开源研究项目,旨在探索机器学习可以有哪些创新使用。微分数字信号处理 (Digital Signal Processing,DDSP) 是一个全新的开源库,融合了现代机器学习与可解释信号处理技术。

Magenta
https://magenta.tensorflow.org/

DDSP
https://magenta.tensorflow.org/ddsp

不同于训练纯深度学习模型(如 WaveNet)去逐个渲染样本的波形,我们改为训练轻量级模型,这些模型能够向这些可微的 DSP 模块中输出随时间变化的控制信号(因此,DDSP 中有一个额外的“D”),从而合成最终声音。我们在 TensorFlow Keras 层的递归和卷积模型中整合了 DDSP,其有效生成音频的速度为更大型自回归模型的 1000 倍,而对模型参数和训练数据的需求仅为后者的百分之一。

WaveNet
https://deepmind.com/blog/article/wavenet-generative-model-raw-audio

DDSP 中一个有趣的应用是音色转换,即将用户输入的声音转换为乐器声。先用目标萨克斯对 DDSP 模型开展 15 分钟的训练。然后,你可以演唱一段旋律,经过训练的 DDSP 模型会将其重新渲染成萨克斯的声音。我们已在 Sounds of India 中将这项技术应用于三种印度古典乐器:Bansuri、Shehnai 和 Sarangi。

音色转换
https://colab.sandbox.google.com/github/magenta/ddsp/blob/master/ddsp/colab/demos/timbre_transfer.ipynb#scrollTo=Go36QW9AS_CD

使用 TFX,TFJS 训练并部署到浏览器中

TFX

TensorFlow Extended (TFX)是用于生产机器学习 (ML) 的端到端平台,包括准备数据、训练、验证和在生产环境中部署模型。使用 TFX 训练模型(将用户的声音转换为上述某种乐器声),然后将这些模型转换为 TensorFlow.js 格式,以部署在标准网络浏览器中。

TensorFlow Extended (TFX)
https://tensorflow.google.cn/tfx/

TensorFlow.js
https://tensorflow.google.cn/js

通过部署到浏览器中,为用户带来与机器学习模型交互的无缝体验:仅需点击超链接,加载网站页面。而无需安装工作。在浏览器中运行客户端,我们能够直接在传感器数据源处执行推理,从而最大程度地减少延迟,降低与大型显卡、CPU 和内存相关的服务器成本。此外,应用会将您的声音用作输入,因此用户隐私十分重要。由于整个端到端的体验都发生在客户端和浏览器当中,因此传感器或麦克风收集到的数据保留在用户的设备上。

基于浏览器的机器学习模型需要进行优化以尽可能缩减其大小,从而降低所用带宽。在这种情况下,每种乐器的理想超参数也大有不同。我们利用 TFX 对数百个模型进行大规模训练和调试,确定每个乐器可用的最小模型尺寸。因此,我们能够大幅降低其内存占用。例如,在未对音质产生明显影响的情况下,Bansuri 乐器模型的磁盘占用量约降低至以前的二十分之一。

我们还可借助 TFX 在不同的模型架构(GRU、CNN)、不同类型的输入(响度、RMS 能量)和不同的乐器数据源上执行快速迭代。我们每次都能够快速有效地运行 TFX 流水线,生成具有所需特性的新模型。

TensorFlow.js

构建 TensorFlow.js DDSP 模型需要达到严格的性能和模型质量目标,所以具有独特的挑战性。模型需要高效执行音色转换,以便在移动设备上有效运行。同时,一旦模型质量出现任何下降,便会导致音频失真,进而破坏用户体验。

我们首先探索了众多的 TensorFlow.js 后端和模型架构。WebGL 后端的优化程度最高,而 WebAssembly 后端则可在低端手机上运行良好。我们采用了基于 Convnet 的 DDSP 模型,并利用 WebGL 后端,以满足 DDSP 的计算需求。

WebGL 后端
https://github.com/tensorflow/tfjs/tree/master/tfjs-backend-webgl

WebAssembly 后端
https://github.com/tensorflow/tfjs/tree/master/tfjs-backend-wasm

为缩短模型下载时间。我们研究了模型的拓扑结构,并使用 Fill/ZeroLike 算子压缩了大量常数张量,从而将模型大小从 10MB 缩减到 300KB。

为使 TensorFlow.js 模型准备就绪,以便在生产环境中将其大规模部署在设备上,我们还重点关注了以下三个主要领域:推理性能、内存占用和数值稳定性。

推理性能优化

DDSP 模型中包括神经网络和信号合成器。合成器部分包含许多需要大量算力的信号处理算子。为提升模型在移动设备上的性能,我们使用特殊的 WebGL Shader 重新编写了内核,以便充分利用 GPU。例如,通过并行累积求和算子,推理时间可缩短 90%。

降低内存占用

我们的目标是尽可能在更多种类型的移动设备上运行模型。由于许多手机的 GPU 显存有限,我们需要确保尽可能降低模型的内存占用。通过处理中间张量并添加新标记,我们能够提早处理 GPU 纹理,从而实现这一目标。通过这些方法,我们可以将显存占用减少 60%。

数值稳定性

DDSP 模型需要达到非常高的数值精度,才能生成动听的音乐。这一点与常见的分类模型截然不同:在分类模型中,一定范围内的精度降低并不会影响最终的分类结果。我们在此体验中使用的 DDSP 模型为生成模型。任何精度较低和不连续的音频输出都可轻易被我们敏感的耳朵发觉。使用 float16 WebGL 纹理时,我们遇到了数值稳定性问题。因此,我们重新编写了一些主要算子,以减少输出结果的上溢和下溢。例如,在累积求和算子中,我们会确保在 Shader 内以全浮点精度完成累积,并在将输出结果写入 float16 纹理前,运用模数计算来避免结果溢出。

动手尝试!

您可使用手机访问 g.co/SoundsofIndia,尝试此体验。如您愿意,请与我们分享您的结果。我们十分期待看到您用自己的声音所创作的音乐。

如果您有兴趣了解机器学习如何增强创造力与创新性,可浏览 Magenta 团队的博客,详细了解该项目,并为他们的开源 GitHub 贡献力量,也可查看 #MadeWithTFJS,从 TensorFlow.js 社区获得更多浏览器端机器学习示例。如果您对使用 ML 最佳做法在生产环境中大规模训练并部署模型比较感兴趣,请查看 Tensorflow Extended。

博客
https://magenta.tensorflow.org/blog

GitHub
https://github.com/magenta/magenta

#MadeWithTFJS
https://twitter.com/search?q=%23madewithtfjs&src=typed_query

致谢

本项目的实现离不开 Miguel de Andrés-Clavera、Yiling Liu、Aditya Mirchandani、KC Chung、Alap Bharadwaj、Kiattiyot (Boon) Panichprecha、Pittayathorn (Kim) Nomrak、Phatchara (Lek) Pongsakorntorn、Nattadet Chinthanathatset、Hieu Dang、Ann Yuan、Sandeep Gupta、Chong Li、Edwin Toh、Jesse Engel 的巨大努力,以及 Michelle Carney、Nida Zada、Doug Eck、Hannes Widsomer 和 Greg Mikels 提供的其他帮助。非常感谢 Tris Warkentin 和 Mitch Trott 的大力支持。


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

    关注

    15

    文章

    519

    浏览量

    45297
  • 机器学习
    +关注

    关注

    66

    文章

    8116

    浏览量

    130550
  • tensorflow
    +关注

    关注

    13

    文章

    313

    浏览量

    60242

原文标题:案例分享 | 轻量而高效,12 周落地一个趣味音乐交互!

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

收藏 人收藏

    评论

    相关推荐

    芯片是怎么处理通信过程中的数字信号的?

    在芯片和芯片之间的通信中,芯片要接收来自其他芯片传输过来的数字信号,同时或者不同时向其他芯片发送数字信号。我想知道芯片内部是如何处理这些数字信号的? 以最常见的串行通信为例,数据是一位
    发表于 04-13 22:28

    数字信号处理DSP库文件的使用方法和功能实现

    本文首先介绍数字信号处理(DSP),是指将连续的模拟信号转换为不连续、离散的数字信号并进行处理以提取所需的
    的头像 发表于 04-03 14:09 1187次阅读
    <b class='flag-5'>数字信号</b><b class='flag-5'>处理</b>DSP库文件的使用方法和功能实现

    数字信号为啥比模拟信号更清晰和稳定?

    数字信号为啥比模拟信号更清晰和稳定? 数字信号相比模拟信号更清晰和稳定的原因,主要是由于数字信号的特性以及
    的头像 发表于 02-01 09:45 558次阅读

    数字信号处理信号与系统区别

    数字信号处理信号与系统是两个很重要的概念。虽然它们都涉及到信号处理和分析,但在很多方面有着不同的特点和应用。本文将详细探讨
    的头像 发表于 01-18 09:30 1062次阅读

    信号、系统和数字信号处理知识整理

    信号、系统和数字信号处理知识整理
    发表于 12-08 10:47 211次阅读
    <b class='flag-5'>信号</b>、系统和<b class='flag-5'>数字信号</b><b class='flag-5'>处理</b>知识整理

    数字信号处理C语言的程序集

    电子发烧友网站提供《数字信号处理C语言的程序集.pdf》资料免费下载
    发表于 11-21 11:14 21次下载
    <b class='flag-5'>数字信号</b><b class='flag-5'>处理</b>C语言的程序集

    VLSI数字信号处理课件

    电子发烧友网站提供《VLSI数字信号处理课件.ppt》资料免费下载
    发表于 11-18 09:44 1次下载
    VLSI<b class='flag-5'>数字信号</b><b class='flag-5'>处理</b>课件

    车载系统和安全的数字信号处理

    电子发烧友网站提供《车载系统和安全的数字信号处理.pdf》资料免费下载
    发表于 10-20 10:54 0次下载
    车载系统和安全的<b class='flag-5'>数字信号</b><b class='flag-5'>处理</b>

    数字信号处理MATLAB版资料分享

    的核心内容。如果仅仅用数字滤波器代替某个系统中的模拟滤波器,则还不能充分发挥数字技术的特长。事实上,对信号进行调制,滤波,变换.增强、压缩、检测、估计、识别等,都是数字信号
    发表于 09-28 06:34

    数字信号处理—理论、算法与实现

    与解调、反卷积、SVD、独立分量分析及同太民滤波等)、平稳随机信号的基本概念、经典功率谱估计、参数模型功率谱估计、数字信号处理中的有限字长问题及数字信号
    发表于 09-19 08:01

    数字信号处理的FPGA实现

    FPGA正在掀起一场数字信号处理的变革。本书旨在讲解前端数字信号处理算法的高效实现。首先概述了当前的FPGA技术、器件以及用于设计最先进DSP系统的工具。第1章的案例
    发表于 09-19 06:38

    数字信号处理器概论

    作为数字信号处理的一个实际任务就是要求能够快速、高效、实时完成处理任务,这就要通过通用或专用的数字信号处理器来完成。因此,
    的头像 发表于 08-07 16:58 680次阅读

    数字信号处理matlab

    数字信号处理,或者说对信号数字处理,是60年代前后发展起来的一门新兴学科。进入70年代以来,随着电子计算机、大规模集成电路(LSI)和超大规模集成电路(VL.SI),以及微
    发表于 06-12 09:22 3次下载

    数字信号处理器的常见故障

    数字信号处理器是一种专门用于数字信号处理的微处理器。它能够高效地执行数字信号
    的头像 发表于 05-31 11:53 1777次阅读

    数字信号处理简介

    本文概述了什么是 DSP、它是如何工作的以及它可以提供哪些优势。 为了了解DSP的优势,我们首先看一下传统的信号处理方法,即模拟信号处理数字信号
    的头像 发表于 05-03 14:13 4152次阅读
    <b class='flag-5'>数字信号</b><b class='flag-5'>处理</b>简介