Вот что я пытаюсь сделать: я хотел бы взять WAV-файл (например, скажем, https://freesound.org/people/thefsoundman/sounds/118513/,, что составляет 109 КБ).Я хочу проанализировать этот WAV-файл, используя SPEAR , который я также сделал, и выдал следующий вывод:
Теперь я хочу использовать эти данныедля воспроизведения аппроксимации звука с использованием API Web Audio, создав осциллятор с использованием периодической волны.Примерно так:
let real = new Float32Array([ /* lots of numbers */ ]);
let imag = new Float32Array([ /* lots of numbers */ ]);
let wave = ctx.createPeriodicWave(real, imag);
let o = ctx.createOscillator();
o.setPeriodicWave(wave);
o.frequency.value = /* ? */;
Я в растерянности относительно того, как преобразовать вывод, который я вижу в SPEAR (или любом другом эквивалентном инструменте, который вы могли бы предложить), в «коэффициенты Фурье» (косинуси значения синуса), ожидаемые функцией createPeriodicWave
.Я также не уверен, имеет ли смысл вопрос, который я задаю, и возможно ли удаленно представить общий WAV-файл в виде периодической волновой таблицы, подобной этой.
(Если вы спросите: цель здесьдля определения наименьшего возможного размера, необходимого для воспроизведения звука, "близкого" к оригинальному звуку. Я понимаю, что могу значительно уменьшить 109 КБ, перейдя в режим моно, 11 КГц WAV, сжатия в MP3 и т. д., но я бы предпочелесли возможно, представлять в виде последовательности чисел.)
Есть ли какие-нибудь звуковые эксперты, которые могут дать мне следующий шаг?