现在我正在开发Electron的软件。这是一个音乐播放器应用程序。
我要做的是我必须从(a)传入的歌曲中提取音频特征。这不是实时提取,因为我想提取整首歌的特征。
我使用库调用Meyda和Web Audio API。我注意到我的实现消耗了大量的RAM(约为2,000 MB)。
这是我的实施:
let offlineCtx = new OfflineAudioContext(
2,
duration * sampleRate,
sampleRate
)
let source = offlineCtx.createBufferSource()
let buffer = await audioCtx.decodeAudioData(songData.buffer)
source.buffer = buffer
source.connect(offlineCtx.destination)
source.start()
const SLICING_WINDOW_SIZE = 1024
let renderedBuffer = await offlineCtx.startRendering()
let channelData = await renderedBuffer.getChannelData(0)
let results = []
for (let i = 0; i < channelData.length - SLICING_WINDOW_SIZE; i += SLICING_WINDOW_SIZE) {
const r = Meyda.extract(
'mfcc',
channelData.slice(i, i + SLICING_WINDOW_SIZE)
)
results.push(r)
}
有没有办法减少RAM消耗?谢谢!