使用HTML5 web音频API提取mp3文件的歌曲频率
Extracting the song frequency of an mp3 file using HTML5 web audio API
我使用HTML5 web音频API来分析歌曲,并在平均声音频率低于某一值时创建标记。使用现有的AudioNode基础设施,我设法做到了这一点,但只有在播放歌曲时才会分析声音。
然而,我想要的是提前分析歌曲,所以我可以提取沉默标记,并将它们转换为CUE按钮,用户可以使用它来移动整个歌曲。
显然,为了分析它,首先要播放整首歌是非常慢的,特别是如果这首歌是一个50分钟的播客。我试着把播放速率加快到10倍,但是没有用。
我认为解决方案在于跳过Web音频API,并分析原始的ArrayBuffer,然而,我真的不知道从哪里开始。
建议吗?想法吗?
我在一个演示文稿中找到了一个幻灯片,它正好描述了这个:这里
API的正常使用是实时处理音频。相反,我们可以通过整个系统对音频进行预处理,并得到结果:
唯一的问题是,我对音频API的理解过于简单,看不到代码示例中的"技巧":
var sampleRate = 44100.0;
var length = 20; // seconds
var ctx = new webkitAudioContext(2, sampleRate * length, sampleRate);
ctx.oncomplete = function(e) {
var resultAudioBuffer = e.renderedBuffer;
...
};
function convolveAudio(audioBuffer, audioBuffer2) {
var source = ctx.createBufferSource();
var convolver = ctx.createConvolver();
source.buffer = audioBuffer;
convolver.buffer = audioBuffer2;
// source -> convolver -> destination.
source.connect(convolver);
convolver.connect(ctx.destination);
source.noteOn(0);
ctx.startRendering();
}
但我认为至少分享这个比完全离开它更好,即使这不是我希望给出的答案。
上面的卷积描述了傅里叶变换,它将音频从随时间的强度移动到随频率的强度。我建议谷歌一下javascript傅里叶变换。根据你要找的东西,我看到了几个关于这个主题的有用链接。
相关文章:
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在php文件中获取$.post-ajax传递的值
- 直接下载文件,而不是从window.open(url)
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用压缩的JavaScript文件(不是运行时压缩)
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- Javascript运行php文件,然后下载文件
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 使用HTML5 web音频API提取mp3文件的歌曲频率
- 使用Web audio API立即从音频文件中获取频率数据