

Модераторы: ElenVR, Людмила, PR
Для распознавания DTMF используется стандартный алгоритм, описанный в Интернете. В сигнале DTMF должны присутствовать две частоты из восьми возможных. Алгоритм сначала делает свертку очередного блока входных звуковых данных с каждой из восьми частот и сравнивает полученные величины сверток с пороговым значением. Если две свертки дали значение больше порогового, а остальные шесть - меньше, то считается, что сигнал есть.Софтлаб, можете пояснить алгоритм распознавания для лучшего понимания процессов, можно даже не научно-популярно, постараюсь понять.
Обработка звука делается на частоте, указанной в настройках DTMFConfig-а. Звук в плате обычно имеет более высокую частоту оцифровки. Преобразование частоты звука делается системой и обычно качество преобразования в кратные частоты (в два, четыре раза) очень хорошее. Увеличение частоты обработки звука в алгоритме увеличивает нагрузку на CPU и сохраняет высокочастотный шум, присутствующий в исходном сигнале, поэтому мы рекомендуем уменьшать частоту обработки. Во всех статьях утверждается, что для надежного распознавания DTMF-сигналов достаточно частоты обработки звука 8000 Гц.Мне так и непонятна корреляция данного параметра с способностью плагина к распознаванию DTMF.
Код: Выделить всё
177313.015: ----12:41:52 09:04:2012 Detect DTMF: 23DB--------------------------------
177313.031: --------CallCnt: 16622304, SleepTime: 16 Thread: 3904, Char=B Delay=32 ProcessingTime=61 get_smart_cnt()=325557535619 m_StartBlockTime=318214132498 timeDelta=-33
177313.046: --------CallCnt: 16622306, SleepTime: 15 Thread: 3904, Char=B Delay=40 ProcessingTime=12 get_smart_cnt()=325557553640 m_StartBlockTime=318214150161 timeDelta=-40
179487.234: --------CallCnt: 16826126, SleepTime: 0 Thread: 3904, Char=1 Delay=36 ProcessingTime=25 get_smart_cnt()=327564553769 m_StartBlockTime=320175879598 timeDelta=-36
179487.250: DTMF detection: DTMF_Start_block, Got FIRST Symbol:1
179487.250: --------CallCnt: 16826127, SleepTime: 0 Thread: 3904, Char=1 Delay=33 ProcessingTime=37 get_smart_cnt()=327564567542 m_StartBlockTime=320175893049 timeDelta=-34
179487.390: --------CallCnt: 16826141, SleepTime: 0 Thread: 3904, Char=2 Delay=30 ProcessingTime=59 get_smart_cnt()=327564699842 m_StartBlockTime=320176022342 timeDelta=-31
179487.390: DTMF detection: DTMF_Start_block, Got next symbol 2
179487.390: DTMF detection: DTMF_Stop_block, Got FIRST Symbol:2
179487.421: --------CallCnt: 16826143, SleepTime: 15 Thread: 3904, Char=2 Delay=37 ProcessingTime=10 get_smart_cnt()=327564717849 m_StartBlockTime=320176039993 timeDelta=-38
179487.546: --------CallCnt: 16826155, SleepTime: 15 Thread: 3904, Char=C Delay=40 ProcessingTime=8 get_smart_cnt()=327564838651 m_StartBlockTime=320176158071 timeDelta=-40
179487.546: DTMF detection: DTMF_Start_block, Got next symbol C
179487.562: --------CallCnt: 16826156, SleepTime: 16 Thread: 3904, Char=C Delay=37 ProcessingTime=19 get_smart_cnt()=327564847658 m_StartBlockTime=320176166864 timeDelta=-38
179487.562: --------CallCnt: 16826157, SleepTime: 0 Thread: 3904, Char=C Delay=34 ProcessingTime=30 get_smart_cnt()=327564854875 m_StartBlockTime=320176173908 timeDelta=-35
179487.687: --------CallCnt: 16826168, SleepTime: 16 Thread: 3904, Char=A Delay=40 ProcessingTime=16 get_smart_cnt()=327564966648 m_StartBlockTime=320176283174 timeDelta=-40
179487.687: DTMF detection: DTMF_Start_block, Got next symbol A
179487.687: ----13:18:07 09:04:2012 Detect DTMF: 12CA--------------------------------
179487.687: DTMF detection: DTMF_Stop_block, TimeDelta: 288 Wrong symb3 A
179487.687: --------CallCnt: 16826169, SleepTime: 0 Thread: 3904, Char=A Delay=37 ProcessingTime=29 get_smart_cnt()=327564975696 m_StartBlockTime=320176292004 timeDelta=-37
179487.703: --------CallCnt: 16826170, SleepTime: 16 Thread: 3904, Char=A Delay=34 ProcessingTime=40 get_smart_cnt()=327564984716 m_StartBlockTime=320176300809 timeDelta=-35
179644.046: --------CallCnt: 16840827, SleepTime: 0 Thread: 3904, Char=2 Delay=32 ProcessingTime=37 get_smart_cnt()=327709311501 m_StartBlockTime=320317372107 timeDelta=-33
179644.046: DTMF detection: DTMF_Stop_block, Got FIRST Symbol:2
179644.062: --------CallCnt: 16840828, SleepTime: 16 Thread: 3904, Char=2 Delay=30 ProcessingTime=48 get_smart_cnt()=327709318703 m_StartBlockTime=320317379135 timeDelta=-30
179644.078: --------CallCnt: 16840829, SleepTime: 16 Thread: 3904, Char=2 Delay=27 ProcessingTime=61 get_smart_cnt()=327709327748 m_StartBlockTime=320317387963 timeDelta=-28
179644.093: --------CallCnt: 16840831, SleepTime: 15 Thread: 3904, Char=2 Delay=44 ProcessingTime=10 get_smart_cnt()=327709352928 m_StartBlockTime=320317412627 timeDelta=-45
179644.203: --------CallCnt: 16840841, SleepTime: 16 Thread: 3904, Char=3 Delay=29 ProcessingTime=57 get_smart_cnt()=327709448531 m_StartBlockTime=320317506025 timeDelta=-30
179644.203: DTMF detection: DTMF_Stop_block, Got next symbol 3
179644.218: --------CallCnt: 16840843, SleepTime: 0 Thread: 3904, Char=3 Delay=37 ProcessingTime=6 get_smart_cnt()=327709466502 m_StartBlockTime=320317523642 timeDelta=-37
179644.234: --------CallCnt: 16840844, SleepTime: 16 Thread: 3904, Char=3 Delay=34 ProcessingTime=18 get_smart_cnt()=327709473717 m_StartBlockTime=320317530683 timeDelta=-35
179644.234: --------CallCnt: 16840845, SleepTime: 0 Thread: 3904, Char=3 Delay=31 ProcessingTime=31 get_smart_cnt()=327709482762 m_StartBlockTime=320317539510 timeDelta=-32
179644.359: --------CallCnt: 16840856, SleepTime: 16 Thread: 3904, Char=D Delay=36 ProcessingTime=15 get_smart_cnt()=327709594507 m_StartBlockTime=320317648751 timeDelta=-37
179644.359: DTMF detection: DTMF_Stop_block, Got next symbol D
179644.375: --------CallCnt: 16840857, SleepTime: 16 Thread: 3904, Char=D Delay=34 ProcessingTime=27 get_smart_cnt()=327709603535 m_StartBlockTime=320317657563 timeDelta=-34
179644.375: --------CallCnt: 16840858, SleepTime: 0 Thread: 3904, Char=D Delay=31 ProcessingTime=41 get_smart_cnt()=327709612587 m_StartBlockTime=320317666397 timeDelta=-32
179644.390: --------CallCnt: 16840859, SleepTime: 15 Thread: 3904, Char=D Delay=28 ProcessingTime=53 get_smart_cnt()=327709621617 m_StartBlockTime=320317675211 timeDelta=-29
179644.515: --------CallCnt: 16840870, SleepTime: 15 Thread: 3904, Char=B Delay=33 ProcessingTime=42 get_smart_cnt()=327709733472 m_StartBlockTime=320317784554 timeDelta=-34
179644.515: DTMF detection: DTMF_Stop_block, Got next symbol B
179644.515: ----13:20:43 09:04:2012 Detect DTMF: 23DB--------------------------------
179644.515: --------CallCnt: 16840871, SleepTime: 0 Thread: 3904, Char=B Delay=31 ProcessingTime=50 get_smart_cnt()=327709742415 m_StartBlockTime=320317793287 timeDelta=-31
179644.531: --------CallCnt: 16840872, SleepTime: 16 Thread: 3904, Char=B Delay=28 ProcessingTime=71 get_smart_cnt()=327709749633 m_StartBlockTime=320317800322 timeDelta=-29
Код: Выделить всё
177215.593: DTMF detection: DTMF_Start_block, Got FIRST Symbol:1
177215.593: --------CallCnt: 16613171, SleepTime: 0 Thread: 3904, Char=1 Delay=31 ProcessingTime=51 get_smart_cnt()=325467601642 m_StartBlockTime=318126227117 timeDelta=-31
177215.875: --------CallCnt: 16613197, SleepTime: 0 Thread: 3904, Char=C Delay=31 ProcessingTime=58 get_smart_cnt()=325467861313 m_StartBlockTime=318126480923 timeDelta=-31
177215.875: DTMF detection: DTMF_Start_block, TimeDelta: 285 Wrong symb3 C
177215.906: --------CallCnt: 16613198, SleepTime: 31 Thread: 3904, Char=C Delay=28 ProcessingTime=68 get_smart_cnt()=325467877579 m_StartBlockTime=318126496813 timeDelta=-28
177215.921: --------CallCnt: 16613200, SleepTime: 15 Thread: 3904, Char=C Delay=35 ProcessingTime=23 get_smart_cnt()=325467895589 m_StartBlockTime=318126514462 timeDelta=-35
177216.046: --------CallCnt: 16613212, SleepTime: 0 Thread: 3904, Char=A Delay=38 ProcessingTime=13 get_smart_cnt()=325468016302 m_StartBlockTime=318126632462 timeDelta=-38
177216.062: --------CallCnt: 16613213, SleepTime: 16 Thread: 3904, Char=A Delay=35 ProcessingTime=37 get_smart_cnt()=325468025350 m_StartBlockTime=318126641282 timeDelta=-35
А зачем? Это наше "внутреннее время". В логе содержатся нормальные времена и даты:Подскажите пожалуйста, как перевести временные метки типа "179487.687" в привычный вид.
Да, об этом говорит следующая запись:И второй вопрос, в представленном куске лога сработка по метке DTMF_Start_block прошла нормально?
Да, если судить по имеющемуся куску лога, то метка не обнаружилась.А в представленном ниже куске лога метка DTMF_Start_block не была опознана?
Есть такое делоЖалуется, что метки периодически не ловятся.
Только это:Есть ли у вас какие-нибудь контакты технических специалистов RU.TV?
Код: Выделить всё
Технические параметры меток (в терминологии softlab-nsk - тестировали на их оборудовании и ПО):
Входная метка:
Cue-tone (DTMF) signal: 12CA
Symbol duration: 50ms
Gap duration: 100ms
Delay: 3523ms
Deviation: 35ms
Channel: Inverted Stereo
Выходная метка:
Cue-tone (DTMF) signal: 23DB
Symbol duration: 50ms
Gap duration: 100ms
Delay: 977ms
Deviation: 35ms
Channel: Inverted Stereo
Best regards,
Denis Trunov
Head of TV department
RU.TV (Russian Mediagroup, JSC)
Tel +7 495 232-16-36#1010
Cell +7 910 433-56-41
Fax +7 495 956-13-60
www.ru.tv