我正在处理音频,但我是这个领域的新手。我想将来自麦克风的声音与我的源音频(只有1个声音)匹配,就像来自Shazam的可乐广告一样。 Example Video(0.45分钟)但是,我想通过JavaScript在网站上制作它。谢谢。
答案 0 :(得分:4)
构建类似于Shazam后端的东西并非易事。我们需要:
我们如何执行每一步?
这个绝对没有大事。我们可以使用Web Audio API
来实现此目的。你可以谷歌周围的关于如何使用它的好教程。 This link提供了一些您在使用时可能想要了解的基本知识。
显然,这件作品将成为像这样的项目中的算法挑战。可能有各种方法来处理这一部分,而没有足够的时间在这里描述它们,但是一种可行的技术(恰好是Shazam实际使用的技术),以及更详细地描述here,创建和比较源材料的较小部分的指纹,您可以使用FFT分析生成。
其工作原理如下:
现在我们有一个已准备好使用的指纹数据库。我们现在需要将它们与我们的麦克风输入进行比较。
这不是一个非常容易做得好的项目。所需的调整和优化量将证明是一项挑战。有些麦克风不准确,大多数环境都有其他声音,所有这些都会使你的结果变得混乱,但它也可能没有声音那么糟糕。我的意思是,这是一个从外部看起来非常复杂的系统,我们只是把它分解成一些相对简单的步骤。
另外作为最后一点,你在帖子中多次提到Javascript,你可能会注意到我在答案中提到过零次,这是因为实施语言不是一个重要因素。这个系统足够复杂,最难解决的问题就是你在纸上解决的问题,所以你不需要考虑“如何在Y中做X”,只需找出一个算法X,Y应该自然而然。