对于副项目,我使用以下JS插件在浏览器中绘制音频文件的频谱图:
https://www.npmjs.com/package/spectrogram
var spectrogram = require('spectrogram');
var spectro = Spectrogram(document.getElementById('canvas'), {
audio: {
enable: false
}
});
var audioContext = new audioContext();
var request = new XMLHttpRequest();
request.open('GET', 'audio.mp3', true);
request.responseType = 'arraybuffer';
request.onload = function() {
audioContext.decodeAudioData(request.response, function(buffer) {
spectro.addSource(buffer, audioContext);
spectro.start();
});
};
request.send();
(此处提供演示:https://lab.miguelmota.com/spectrogram/example/)
但是,当前的代码和示例将“逐行”绘制频谱图,因为声音当前正在通过缓冲区播放。
我想知道是否有办法实际读取文件,然后立即绘制整个频谱图?我尝试将数组缓冲区转换为blob,但其余的函数实际上期望声音被缓冲...
所以我的问题是:有没有办法实现我正在寻找的东西? (立即绘制满谱谱图,而不是缓冲音频并“随时随地”绘制它
有没有更简单的方法来实现我正在寻找的东西?
感谢您的时间和帮助。