Распознавание короткого высокочастотного звука в низкочастотном шуме (objc / c)

В настоящее время я создаю приложение, которое сигнализирует о готовности другим устройствам с помощью высокочастотного звука.

(передатчик): устройство издает короткий звуковой сигнал частотой около 20 кГц.

(приемник): другое устройство будет прослушивать звук этой частоты на небольшом расстоянии от передатчика (примерно 10 м). Устройство принимает аудиоданные с микрофона.

Фоновый шум будет довольно громким, от 0 до 10 кГц (примерно человеческий диапазон речи), и будет производиться небольшой группой людей.

Мне нужно, чтобы приемное устройство могло обнаруживать звук 20 кГц, отделенный от шума,

и знать время, когда оно было получено.

Любая помощь с подходящим алгоритмом, библиотекой или, что еще лучше, кодом на C или

Мы будем очень признательны за использование Objc для обнаружения этого высокочастотного звука.


person 123hal321    schedule 04.03.2011    source источник


Ответы (4)


20 кГц могут подтолкнуть его, поскольку (а) большинство звуковых карт имеют фильтры нижних частот (сглаживание) на 18-20 кГц и (б) большинство динамиков и микрофонов имеют тенденцию к плохому отклику на 20 кГц. Вы могли бы рассмотреть, скажем, 15 кГц?

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

person Paul R    schedule 04.03.2011
comment
Спасибо за очень полезный вклад. Полагаю, я мог бы использовать 15 кГц. У вас есть какие-нибудь указания, как я могу это реализовать? Мне никогда раньше не приходилось делать звуковой анализ. - person 123hal321; 04.03.2011
comment
@nonono: ну, DSP - это большая тема, но вы можете довольно легко реализовать простой узкополосный фильтр. Одной из наиболее распространенных и простых реализаций для этого является фильтр Гертцеля: en.wikipedia.org/wiki/Goertzel_algorithm, что должно быть более чем адекватно вашим потребностям. - person Paul R; 05.03.2011

Вы можете изучить БПФ (быстрое преобразование Фурье). Этот алгоритм позволит вам проанализировать форму волны и преобразовать ее в частотный спектр для дальнейшего анализа.

person Simon    schedule 04.03.2011
comment
Чувак, полный перебор. Просто примените полосовой КИХ-фильтр для этой частоты и измерьте мощность результирующего сигнала. Когда он превышает порог, это тот тон. - person datenwolf; 04.03.2011
comment
То, что сказал @datenwolf - БПФ - это избыточно для обнаружения одиночного тона на известной частоте - Гертцеля или простой однополюсный полосовой фильтр гораздо более подходят. - person Paul R; 05.03.2011

Если это для Mac OS или iOS, я бы начал изучать Audio Units от Core Audio.

1 Вот Apple Обзор Core Audio.

2 Некоторые AudioUnits для Mac OS

3 Или для хостинга iOS AudioUnit

person Old McStopher    schedule 04.03.2011

Звук с такой высокой частотой вообще не будет распространяться через динамик iphone.

person SamFisher83    schedule 19.12.2012