如何使用javascript将图像转换为音频?

时间:2016-09-16 21:20:41

标签: javascript html5 api audio web

我正在尝试一个想法,并创建一个小的网络应用程序,这将允许我选择一个图像,将其转换为音频并播放它(我知道它听起来不会很愉快)

所以我的问题是,是否有人可以提出一些可能帮助我的示例或现有库。

我将探索的其他领域是Processing和MaxMSP的使用,但理想情况下,我希望稍后将我制作的内容包装在Ionic中 - 因此首选网络解决方案。

由于

1 个答案:

答案 0 :(得分:0)

德国数学家大卫希尔伯特发表了我们称之为the Hilbert Curve 的内容,它定义了如何追踪图像中的每个像素,每次只访问一次,而不跳过从一个角落开始到另一个角落结束的任何像素。这就是如何将2D图像转换为1D表示的方法。

在此结果行上,您已记录每个像素的光强度测量值...现在,为了从该图像合成音频,我们将从低频到高频的人类听觉频谱映射到此线上...在每个像素点上方你引入一条正弦曲线振荡器产生一个恒定的单音,其频率适合于它在你的线上从左到右的位置...同时合成所有这些振荡器的音频......这是图像的声音

美丽的方面是它反过来同样好......从任意音频到它的图像表示......它不会丢失流媒体音频可以转换成视频流......如果你这样做而不丢失信息希望循环(音频 - >视频 - >音频 - > ...)变得棘手,因为将每个像素的RGBA折叠成单个光强度值的简单方法是为了避免丢失信息需要multidimensional structure instead of a simple 1D line

Here is a video explaining this Hilbert Curve

它是一个很好的自包含的想法,它在计算上非常简单,能够以可观的音频采样率和位深度实时执行,以获得不错的图像分辨率......我正在积极研究这个问题,并将报告我的发现使用代码仓库

关于实现细节,有一些库可以显示所提供图像的RGBA像素值...还没有编写自己的Hilbert曲线算法,它也有库...一旦你的所有频率振荡器都在嗡嗡作响,你将需要同时对所有这些进行采样以合成一个输出样本作为给定样本时间点的聚合曲线高度...然后能够听到音频输出我将使用Web Audio API来提供其事件循环内存缓冲区使用您的聚合曲线音频...不是一个简单的方法,但非常可行

人类的大脑是足够的塑料,可以训练听到别人看到的东西,盲人会用它来丢弃他们的行走手杖!什么快乐...