【问题标题】:how can I convert an image to audio using javascript?如何使用 javascript 将图像转换为音频?
【发布时间】:2016-09-16 21:20:41
【问题描述】:

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

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

我将探索的其他领域是 Processing 和 MaxMSP 的使用,但理想情况下,我想稍后将我所做的东西打包成 Ionic 之类的 - 所以首选 Web 解决方案。

谢谢

【问题讨论】:

    标签: javascript html api audio web


    【解决方案1】:

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

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

    美丽的方面是它同样适用于反向...从任意音频到其图像表示...它不会丢失流式音频可以转换为视频流...这样做不会丢失信息,如果你希望循环(音频->视频->音频->...)变得棘手,因为将每个像素的 RGBA 折叠成单个光强度值的简单方法是避免丢失您真正需要的信息@ 987654322@

    Here is a video explaining this Hilbert Curve

    这是一个很好的独立想法,计算简单,可以实时执行,以可观的音频采样率和位深度获得体面的图像分辨率......我正在积极研究这个问题,并将报告我的发现带有代码仓库

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

    人类的大脑具有足够的可塑性,可以接受训练以听到别人看到的东西,这样盲人就会用它来扔掉他们的拐杖!!!多么快乐……

    【讨论】:

    • 感谢您的快速响应!这听起来确实很有用,我会深入了解这个视频并尽快回复您。更多类似这样的探索建议,非常欢迎!
    • 我已经做的笔记,我问过自己的小问题非常适合那个视频。我很高兴现在能更深入地挖掘,感谢您的推荐。如果我有任何进展,我会及时通知你。
    • 我真的不知道从哪里开始使用 javascript,但我可以说它肯定是可行的,我在循环每个像素和提取颜色值等之前在 php 中完成了这项任务的第一部分(虽然出于不同的目的)。请发布任何结果,我很乐意看到它们。
    • @Scott Stensland 你能用这个做点什么吗?
    猜你喜欢
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 2015-09-18
    • 2017-05-20
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多