Решение для амплитуды и частоты в файлах WAV

Я также задал этот вопрос здесь, на форуме Sound Design, но вопрос в том, что касается информатики и математики, так что он может действительно принадлежать этому форуму:

Таким образом, я могу успешно найти всю информацию о файле WAV, кроме амплитуды и частоты (герц) функции большого греха, читая двоичные файлы в файле (которые, к сожалению, именно то, что я ищу). Просто чтобы проверить, о чем я говорю, файл генерирует одну волну только с помощью уравнения:

F(s) = A * sin (T * s)

Где s - текущая выборка, A - амплитуда, а T - период. Теперь уравнение для T (периода):

T = (2π * Гц) /(α * ω)

Где Hz - частота в герцах, α - выборка в секунду, а ω - количество каналов.

Теперь я знаю, что для решения по амплитуде я мог бы просто найти значение F(s) где

s = (π/2)/T

Потому что тогда значение функции синуса будет равно 1, а окончательное значение будет эквивалентно A. Проблема в том, что для деления на T я должен знать Герц (или Гц).

Есть ли способ, которым я могу прочитать WAV-файл, чтобы обнаружить Герц по данным, если предположить, что файл содержит только одну волну.

2 ответа

Решение

Просто чтобы прояснить некоторые термины, свойство, которое вы ищете, это частота, а единица измерения частоты - Герц (один раз в секунду). По соглашению типичная нота А имеет частоту 440 Гц.

Вы неправильно поняли функцию, на самом деле. Эта синусоида в реальности имеет вид F(s) = A * sin(2*pi*s/T + c) - вы не знаете, когда это началось, поэтому вы получаете постоянный c там. Также вам нужно делить на T, а не умножать.

Получить амплитуду на самом деле довольно легко. У этой синусоидальной волны есть ряд вершин и долин. Найдите каждую вершину (выше, чем у обоих соседей) и каждую долину (ниже), вычислите среднюю вершину и среднюю долину, и амплитуда в два раза больше разницы между ними. Довольно легко. Период T может быть оценен путем подсчета среднего расстояния от пика до пика и от долины к долине.

Есть один момент, когда нужно быть осторожным. Если есть небольшой шум, вы можете получить небольшую вмятину около вершины. Вместо 14 17 18 17 14 вы можете получить 14 17 16 17 14, Это 16 не долина. Как только вы получите правильную оценку реальных пиков и долин, отбросьте все искаженные пики.

Вопрос не в том, "какая частота?". Если ваша функция отличается от простой функции триггера, это будет комбинация частот, каждая со своей амплитудой.

Правильный подход - цифровая обработка сигналов с использованием конечного преобразования Фурье. Тебе нужно много копать.

Если вы хотите использовать только одну функцию триггера, у вас есть только 2 (амплитуда и частота) или 3 степени свободы (амплитуда, частота и фазовый угол) и N временных точек в файле. Это означает подгонку наименьших квадратов в предположении функции синуса или косинуса.

Другие вопросы по тегам