Как программно определить сигнал dtmf в iphone?

#iphone #ipad #ios4

#iPhone #iPad #ios4

Вопрос:

Как программно определить сигнал dtmf в iphone?.Я хочу определить, должен ли принимаемый аудиосигнал (микрофонный вход) быть тоном dtmf?

Пожалуйста, помогите мне? я действительно боролся с этим в течение 2 дней. Заранее спасибо…..

Ответ №1:

Поскольку система DTMF использует только 8 чистых синусоидальных тонов, будет эффективнее использовать настроенные блоки фильтров или алгоритм Гертцеля для определения присутствия энергии на этих частотах, чем использовать FFT.

Страница Википедии, посвященная алгоритму Гертцеля, содержит хороший псевдокод для описания того, как работает алгоритм. Перевести это в (Objective) C. не должно быть слишком сложно.

http://en.wikipedia.org/wiki/Goertzel_algorithm

Запустите свой звук через него и измеряйте выходную мощность каждые 100 миллисекунд или около того. Это будет изрядная работа — удачи!.

Ответ №2:

Вы можете использовать 8 узкополосных фильтров и усреднение амплитуды за небольшие промежутки времени. Эти два процесса обычно выполняются вместе с использованием вариантов алгоритма Гертцеля.

Еще одна вещь, которую можно сделать, это измерить общую среднюю амплитуду по всем частотам в одном временном окне, используя среднеквадратичное усреднение. Когда энергия всего в 2 окнах фильтра составляет большую часть от общей энергии сигнала, тогда у вас, вероятно, есть сигнал DTMF. Для декодирования DTMF вы можете выполнить поиск в таблице, на основе которой 2 фильтра показывают энергию. Если в звуке намного больше суммарной энергии, чем всего в двух фильтрах, вероятно, весь звуковой сигнал является шумом, а не сигналом DTMF.