добавление «звуковых сигналов» к форме сигнала для отладки при обнаружении - PullRequest
0 голосов
/ 13 октября 2009

Я сам играю с некоторыми алгоритмами обнаружения начала / удара. Мой ввод - это файл .wav, а мой вывод - файл .wav; У меня есть доступ ко всей форме волны в кусках массивов с плавающей точкой [].

У меня не получается найти хороший способ отладки и оценки моих алгоритмов. Поскольку мои входные и выходные данные являются слуховыми, я подумал, что было бы наиболее разумно, если бы мои средства отладки были также слуховыми, например. путем добавления звуковых «тиков» или «звуковых сигналов» в файл .wav в начальных точках.

У кого-нибудь есть идеи, как это сделать? В идеале это был бы простой цикл for, через который я бы пропустил пару сотен или пару тысяч сэмплов.

Ответы [ 3 ]

1 голос
/ 13 октября 2009
float * sample = first sample where beep is to be mixed in
float const beep_duration = desired beep duration in seconds
float const sample_rate = sampling rate in samples per second
float const frequency = desired beep frequency, Hz
float const PI = 3.1415926..
float const volume = desired beep volume
for( int index = 0; index < (int)(beep_duration * sample_rate); index++ )
{
   sample[index] += 
      sin( float(index) * 2.f * PI * sample_rate / frequency ) * volume;
}
1 голос
/ 13 октября 2009

Ответ бедного человека: найдите запись тика или звукового сигнала, а затем смешивайте ее с исходным сигналом в каждый нужный момент. Вы микшируете простым усреднением значений звукового сигнала и формы входного сигнала по продолжительности звукового сигнала.

0 голосов
/ 13 октября 2009

Определите, где в вашем образце вы хотите вставить свой тик (укажите длину тика, так что это диапазон, а не точка). Возьмите БПФ этой части формы волны. Добавьте к представлению частотной области любые частотные компоненты, которые вы хотите для своего «тикового» звука (самым простым будет только один частотный тон). Выполните обратное БПФ для результата и вуаля, у вас есть ваш тон, смешанный с исходным сигналом. Я думаю (с тех пор, как я это сделал, прошло много времени).

...