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

    文章

    561

    浏览量

    45898
  • 机器学习
    +关注

    关注

    66

    文章

    8423

    浏览量

    132752
  • tensorflow
    +关注

    关注

    13

    文章

    329

    浏览量

    60540

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

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

收藏 人收藏

    评论

    相关推荐

    adc与数字信号处理的关系

    在现代电子系统中,模拟信号数字信号之间的转换是至关重要的。模数转换器(ADC)和数字信号处理(DSP)是实现这一转换的关键技术。 1. ADC的基本概念 模数转换器(ADC)是一种将
    的头像 发表于 10-31 10:50 361次阅读

    数字信号和模拟信号的特点及应用

    引言 数字信号和模拟信号是两种基本的信号类型。数字信号是由离散的数值组成的信号,通常用于数字设备
    的头像 发表于 08-25 15:53 1151次阅读

    数字信号是电压还是电流的

    数字信号是一种电信号,它表示信息的方式是离散的,即信号的取值是离散的,而不是连续的。数字信号可以是电压信号,也可以是电流
    的头像 发表于 08-11 10:56 1175次阅读

    数字信号是离散的还是连续的

    的。这些数字值可以是二进制数、十进制数或其他形式的数字数字信号的特点是离散的,即在时间上和幅度上都是离散的。数字信号的产生、传输和处理都需
    的头像 发表于 08-11 10:49 1917次阅读

    数字信号是什么信号的组合

    数字信号是一种由数字值序列组成的信号,它在通信、计算机、电子和自动化等领域具有广泛的应用。数字信号的组合涉及到许多方面,包括数字信号的产生、
    的头像 发表于 08-11 10:47 896次阅读

    数字信号包括哪些 数字信号的特点是什么

    数字信号是一种以数字形式表示的信号,它在现代通信和信息技术中扮演着重要的角色。 数字信号的类型 二进制信号 :最基本的
    的头像 发表于 08-11 10:44 2268次阅读

    数字信号处理与通信原理之间的关系

    数字信号处理技术起着至关重要的作用。数字信号处理研究如何使用数字计算技术对
    的头像 发表于 08-09 09:35 953次阅读

    数字信号处理三大变换关系包括什么

    数字信号处理是电子工程和信息科学领域的一个重要分支,它涉及到对信号进行分析、处理和转换的方法。数字信号
    的头像 发表于 08-09 09:33 1159次阅读

    模拟信号可以通过什么变成数字信号

    模拟信号数字信号信号处理领域的两种基本类型。模拟信号是连续变化的信号,而
    的头像 发表于 06-03 10:48 2051次阅读

    数字信号采集系统有哪些功能

    数字信号采集系统(Digital Signal Acquisition System)是一种用于采集、处理和分析模拟信号的电子设备。它广泛应用于各种领域,如通信、医疗、工业自动化、科研等。本文将详细
    的头像 发表于 05-31 14:26 1030次阅读

    数字信号采集器的作用是什么 数字信号采集器的特点

    数字信号采集器(Digital Signal Recorder,简称DSR)是一种用于采集、记录和分析模拟信号的电子设备。它广泛应用于各种领域,如科学研究、工业生产、通信、医疗、交通等。本文将详细
    的头像 发表于 05-31 14:25 1849次阅读

    数字信号采集的基本原理有哪些

    引言 数字信号采集技术是将模拟信号转换为数字信号的过程,广泛应用于通信、音频处理、视频处理、医疗设备等领域。
    的头像 发表于 05-31 14:19 1470次阅读

    数字信号采集的主要步骤是什么

    数字信号采集是将模拟信号转换为数字信号的过程,以便计算机或其他数字设备能够处理和分析。这个过程对于许多应用领域非常重要,如音频
    的头像 发表于 05-30 16:31 969次阅读

    数字信号处理器的特点、作用及种类

    随着信息技术的飞速发展,数字信号处理器(Digital Signal Processor,简称DSP)作为数字信号处理的核心设备,在通信、音视频、自动控制等领域发挥着越来越重要的作用。
    的头像 发表于 05-22 18:20 2534次阅读

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

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