Это не дает прямого ответа на ваш вопрос, но будет полезно.
В API был добавлен асинхронный метод decodeAudioData
.Это все еще будет использовать XHR, но стоит переключиться на него.Новый метод доступен в Chrome 14.
// Use async decoder if it is available.
if (context.decodeAudioData) {
context.decodeAudioData(arrayBuffer, function(buffer) {
source.buffer = buffer;
}, function(e) {
console.log(e);
});
} else {
source.buffer = context.createBuffer(arrayBuffer, false);
}