Я также задал этот here на форуме Sound Design, но вопрос тяжелый информатика/математика, так что, возможно, на самом деле принадлежат на этом форуме:Решение для амплитуды и частоты в WAV файлы
Так что я способный успешно найти всю информацию о WAV-файле, кроме амплитуды и частоты (герц) функции большого греха, читая двоичные файлы в файле (которые, к сожалению, точно, что я ищу). Просто чтобы убедиться, что я говорю о том, файл генерирует один махать только с уравнением:
F (S) = A * sin (T * S)
Где s это текущая выборка, А амплитуда и T - период. Теперь уравнение для T (период):
Т = (2π * Гц)/(α * ω)
Где Гц является частота в Герцах, α является выборок в секунду, и ω представляет собой сумму каналов.
Теперь я знаю, что решить для амплитуды, я мог бы просто найти значение F (S), где
S = (π/2)/T
Потому что тогда значение функции синуса будет 1, а окончательное значение будет эквивалентно А. Проблема состоит в том, что для деления на Т я должен знать Герц (или Гц).
Есть ли способ, которым я могу прочитать WAV-файл, чтобы обнаружить Hertz из данных, предполагая, что файл содержит только одну волну.
Метод 1 (плохой): прочитайте данные .wav, то есть поплавки, которые представляют звук во времени, а затем получите максимальное значение всех значений времени, чтобы обнаружить амплитуду, а затем проверьте последовательность повторной окклюзии (так же, как и возможно), чтобы найти частоту. Метод второй (лучше подходит, но с математической точки зрения): используйте преобразование дискретного фурье для преобразования вашего сигнала в область частоты. Синусоидальная волна формы «x (t) = A * sin (omega * t)» будет превращена в DFT в один импульс дирака, расположенный в точке * omega * и имеющий амплитуду 'A'. Этот метод более подходит, поскольку это проблема обработки сигналов. –
@MaximilianGerhardt: На самом деле, если вы знаете _a priori_, что вход представляет собой синусоидальную волну, первый метод на самом деле более точен. Он может найти период времени с точностью до подвыборки. – MSalters
Здесь есть ответ. Это не тривиально. https://math.stackexchange.com/questions/36725/how-to-fit-a-curve-to-a-sinusoidal-wave – duffymo