Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: DTMF декодер на PC
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
sigmaN
Нужно организовать декодирование DTMF. Что-то слышал о том, что по хорошему нужно замерять сигнал/шум, применять всяческие фильтрации и т.д. чтобы либо принять всё правильно либо сделать вывод о принципиальной невозможности это сделать при данных условиях на линии.
Так ли страшен волк, как его рисуют?
Может можно где содрать готовый код? Планировал расковырять что-то типа Asterisk....

Думается мне, что тут алгоритм Герцеля будет как нельзя более кстати, но если с FFT проблем нет(да тот же KISS FFT и т.д.) то с Герцелем я вообще пока не дружил...


Кто что скажет? Куда пошлете? smile.gif)))

Да, забыл. DTMF будет приходить с VoIP звонка. Это звонок со стационарного/мобильного на скайп. Какой там вокодер используется - точно сказать не могу, но DTMF там идет в полосе вместе с голосом.
Т.е. схема такая: юзер звонит, набирает пин-код - ему дают ответ. Вот, собственно, этот пин-код надо принять.
Oldring
Цитата(sigmaN @ Jun 26 2010, 03:17) *
Так ли страшен волк, как его рисуют?


Самое сложное - нарыть тестовые сигналы DTMF на фоне голоса.
sigmaN
А разве приличные телефонные аппараты не выключают микрофон пока нажата кнопочка и в линию гудит DTMF?
Oldring
Цитата(sigmaN @ Jun 26 2010, 12:33) *
А разве приличные телефонные аппараты не выключают микрофон пока нажата кнопочка и в линию гудит DTMF?


На аналоговых линиях еще присутствует эхо от автоинформатора.
sigmaN
Эээммм.... эхо не эхо....

Перефразирую вопрос:
Товарищи, подскажите, сложно ли будет сделать, чтобы абонент звонил со своей трубки на скайп, вводил пин код, а софтина моя его принимала и сравнивала с оригиналом? Перехватить аудио у скайпа - проблем нет. Для этого у них апи преспособлено.

Ну хотя-бы в общих чертах обрисуйте мне предстоящие трудности и грабли.....
megadocent
Сделать можно.
Без всяких измерений/фильтраций алгоритмом Герцеля (описан в очень многих мануалах, много примеров на С, поиск по гуглу выдаст много вариантов) сможешь сразу считывать циферки в тишине.
Как уже сказали, основная проблема считывать DTMF когда параллельно идет голос. Или музыка вообще.
Тут надо мерить вторые гармоники нужных частот еще, как минимум. Есть и более сложные алгоритмы, но там уже и сложнее разбираться. Мне под задачу декодирования DTMF хватило Герцеля.
fontp
QUOTE (sigmaN @ Jun 26 2010, 03:17) *
Кто что скажет? Куда пошлете? smile.gif)))


Да туда же куда и раньше посылал за эхоподавителем.

в том же spandsp есть на С
http://www.soft-switch.org/downloads/spandsp/
и здесь на miketdsp есть на С
http://www.miketdspsolutions.com/download.html
sigmaN
Всем спасибо.

P.S.
Оо как народ чувствует, когда вопрос халявщиком задан ))
Честно говоря, сам я вообще не копал ничего по вопросу...
Типа, думал, дай задам вопросец и щас насоветуют с три короба.
А люди не тороопятся. Видят все, что гугль даже не открывался smile.gif
Diz
На контроллере делал, как вот здесь - http://www.abvolt.com/research/Multitone%20detect-IEEE.pdf
Только опорные последовательности использовал не однобитные.
sigmaN
а вот тутговорят что
Цитата
Each key represents the sum
of a pair of tones. One tone is from the high-frequency group between 1 kHz and 2 kHz, and the other tone
is from the low-frequency group below 1 kHz. These frequencies are selected carefully so that the DTMF
signal, which is the sum of the two tones, can be distinguished clearly as the signaling tone even in the
presence of speech waveforms that might occur on the line.
т.е. даже на фоне голоса в принципе всё детектируется по определению.
Другое дело ещё какую там вокодер свинью подсунет - непонятно.....

буду пробовать в общем...
Цитата
Тут надо мерить вторые гармоники нужных частот еще, как минимум. Есть и более сложные алгоритмы, но там уже и сложнее разбираться. Мне под задачу декодирования DTMF хватило Герцеля.
а тут даже такое видали
Цитата
The 2nd harmonic test gives trouble at times. I've experienced channel distortions which resulted in enough 2nd harmonic to fool those tests.
страшно жить ))))
fontp
QUOTE (sigmaN @ Jun 29 2010, 02:40) *
а вот тутговорят что
т.е. даже на фоне голоса в принципе всё детектируется по определению.
страшно жить ))))



Брехня. Без 2-й гармоники inband не работает. По нижним частотам из пар обязательно реализуется контроль 2-й гармоники.
Но на музыке или речи китайца - всё равно могут быть ложные срабатывания. Вот как страшно
sigmaN
spandsp реализует контроль 2-й гармоники?
fontp
QUOTE (sigmaN @ Jul 3 2010, 16:52) *
spandsp реализует контроль 2-й гармоники?


кто его знает... Или реализует или им не нужен inband
Смотрите исходники.
В принципе - какая проблема измерить мощность ещё четверки 2-х гармоник нижнего диапазона и сравнить с порогами?
Ну не 8 фильтров, а 12 нужно реализовать...
sigmaN
Что-то расстроился я немного....
говорят для входящих/исходящих звонков с/на ТФОП, SKYPE использует G.729 и похоже что DTMF после него будет сильно покоцан и ничего доброго у меня скорее всего не получится sad.gif

Попробую конечно повозиться, но судя по всему прогноз не очень хороший......

sad.gif
Цитата
g729 can't support inband DTMF the compression is too extreme
fontp
QUOTE (sigmaN @ Jul 3 2010, 23:08) *
Что-то расстроился я немного....
говорят для входящих/исходящих звонков с/на ТФОП, SKYPE использует G.729 и похоже что DTMF после него будет сильно покоцан и ничего доброго у меня скорее всего не получится sad.gif
Попробую конечно повозиться, но судя по всему прогноз не очень хороший......

sad.gif


Не сильно. Всё относительно. Будет работать с очень большой вероятностью, если только не включен voice detector (VAD/CNG)
VAD всё сильно порежет
sigmaN
Нашел одну подобную поделку для скайпа. Только там не IVR реализован, а просто speed dial.
Вроде как-то работает с горем пополам... единственное, трудности с повторяющимися цифрами, их заменяют на цифра+* (33 -> 3*).

Ну что ж, с понедельника начну, пожалуй, со spandsp.... раз у людей как-то работает, значит это можно повторить smile.gif))


megadocent
Напишите сюда, пожалуйста, что вышло. Интересно, получиться или нет.
sigmaN
Пока это "задание выходного дня", так что на быстрый ответ не расчитывайте, но обязательно отпишусь.
Скорее всего тут будут ещё вопросы....
sigmaN
Забросили мы это дело в общем.....
Как оно часто бывает, дело кончилось так толком и не начавшись )

Просто стало понятно, что до 100% срабатывания там как до Киева задним ходом, и как-бы лучше уж никак, вместо как-нибудь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.