DTMF метки на РуТВ

Здесь обсуждаются любые продукты компании СофтЛаб-НСК для телевизионного вещания (Форвард Т, Форвард ТС, Форвард Голкипер, Форвард Рефери, Форвард Офис, Форвард Инжест)

Модераторы: ElenVR, Людмила, PR

Ответить
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

Отлично. Значит мы вас не обманули :D :D
gosha71
Сообщения: 323
Зарегистрирован: 13 фев 2007 09:33
Откуда: Пермский край г.Чернушка
Контактная информация:

Сообщение gosha71 »

Прога ужасно нагружает проц. :(
vd
Сообщения: 2311
Зарегистрирован: 05 мар 2003 19:21

Сообщение vd »

Которая прога - DTMFTest? Ну так это же тестовая программа, а не рабочая. "Ужасно нагружает" - это насколько?

И я не помню точно, но вроде ее не мы писали.
gosha71
Сообщения: 323
Зарегистрирован: 13 фев 2007 09:33
Откуда: Пермский край г.Чернушка
Контактная информация:

Сообщение gosha71 »

я ни кого не обвиняю, просто к сведению. Программа кушает 100% процессора.
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

Еще раз - о какой программе идет речь?
gosha71
Сообщения: 323
Зарегистрирован: 13 фев 2007 09:33
Откуда: Пермский край г.Чернушка
Контактная информация:

Сообщение gosha71 »

О вышеупомянутой "DTMFTest"
Владимир Вдовика
Сообщения: 131
Зарегистрирован: 16 июн 2010 12:58
Откуда: Ейск. ТК ТСТ

Сообщение Владимир Вдовика »

gosha71 писал(а):Прога ужасно нагружает проц. :(
я ее не раз включал, и висела по несколько часов - проц был загружен на 2 процента...
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

1)Если судить по ссылкам на какие-то инструкции, то вы работает с Рен-ТВ. Это так?
2)А DTMF-метки вы слышите в принимаемом со спутника звуке?
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

Для успешного распознавания меток остановились на частоте распознавания в 24000 Гц, на 8000 Гц распознавание было через раз, буквально очень нестабильно. Мне так и непонятна корреляция данного параметра с способностью плагина к распознаванию DTMF. Софтлаб, можете пояснить алгоритм распознавания для лучшего понимания процессов, можно даже не научно-популярно, постараюсь понять.
Игорь Таранцев
Сообщения: 493
Зарегистрирован: 04 янв 2004 12:45
Откуда: СофтЛаб-НСК

Сообщение Игорь Таранцев »

Софтлаб, можете пояснить алгоритм распознавания для лучшего понимания процессов, можно даже не научно-популярно, постараюсь понять.
Для распознавания DTMF используется стандартный алгоритм, описанный в Интернете. В сигнале DTMF должны присутствовать две частоты из восьми возможных. Алгоритм сначала делает свертку очередного блока входных звуковых данных с каждой из восьми частот и сравнивает полученные величины сверток с пороговым значением. Если две свертки дали значение больше порогового, а остальные шесть - меньше, то считается, что сигнал есть.
Обычно входной сигнал на плате стерео, поэтому сначала делается преобразование его в моно сигнал (берется левый канал, правый канал, сумма или разность левого и правого каналов).
Входной сигнал разбивается на блоки длительностью около 20 милисекунд с шагом 10 милисекунд. Каждый блок обрабатывается, как я описал раньше. Если в блоке был найден символ DTMF, то начинается процесс сравнения времен для последовательности DTMF-символов. Точность измерения времени равна длительности одного блока. Например, нужно найти последовательность "1234" с паузой между символами 40мс и длительностью каждого символа 50мс. Тогда алгоритм должен обнаружить сначала 4-6 раз DTMF-символ "1", затем 3-5 раз отсутствие какого-либо DTMF-символа, затем 4-6 раз DTMF-символ "2", затем 3-5 раз отсутствие какого-либо DTMF-символа, затем 4-6 раз DTMF-символ "3", затем 3-5 раз отсутствие какого-либо DTMF-символа, и, наконец, 1 раз DTMF-символ "4". Все. Указанная последовательность DTMF-символов считается найденой и формируется сигнал, по которому программа OnAir выполняет нужное действие.
Мне так и непонятна корреляция данного параметра с способностью плагина к распознаванию DTMF.
Обработка звука делается на частоте, указанной в настройках DTMFConfig-а. Звук в плате обычно имеет более высокую частоту оцифровки. Преобразование частоты звука делается системой и обычно качество преобразования в кратные частоты (в два, четыре раза) очень хорошее. Увеличение частоты обработки звука в алгоритме увеличивает нагрузку на CPU и сохраняет высокочастотный шум, присутствующий в исходном сигнале, поэтому мы рекомендуем уменьшать частоту обработки. Во всех статьях утверждается, что для надежного распознавания DTMF-сигналов достаточно частоты обработки звука 8000 Гц.

Как показывает практика, на качество распознавания DTMF-меток очень сильно влияет амплитуда входного сигнала. Уровень сигнала должен быть в интервале от 0 до -12 децибел. Изменение частоты обработки сигнала влияет очень слабо.
vd
Сообщения: 2311
Зарегистрирован: 05 мар 2003 19:21

Сообщение vd »

Именно так - алгоритм определяет именно пороговый уровень определенных частотных компонент, поэтому от амплитуды сигнала зависит очень много (грубо говоря, даже если в сигнале есть только DTMF-метка, но очень-очень тихая, она не будет распознана). Зато шум в сигнале может быть довольно большим, а DTMF-метка все равно будет распознана.

При распознавании звуковых отбивок (WAV-образцов) используется другой алгоритм, в котором свертка нормируется, поэтому там зависимость от амплитуды гораздо меньше. Там важно, чтобы уровень шумов был невысок. Впрочем, если шумы настолько большие, что распознавание отбивок не работает, такие шумы будут очень хорошо слышны конечному телезрителю, что совершенно недопустимо.
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

Подскажите пожалуйста, как перевести временные метки типа "179487.687" в привычный вид. И второй вопрос, в представленном куске лога сработка по метке DTMF_Start_block прошла нормально?

Код: Выделить всё

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
А в представленном ниже куске лога метка DTMF_Start_block не была опознана?

Код: Выделить всё

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
Это так?
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

Подскажите пожалуйста, как перевести временные метки типа "179487.687" в привычный вид.
А зачем? Это наше "внутреннее время". В логе содержатся нормальные времена и даты:
177313.015: ----12:41:52 09:04:2012 Detect DTMF: 23DB--------------------------------
И второй вопрос, в представленном куске лога сработка по метке DTMF_Start_block прошла нормально?
Да, об этом говорит следующая запись:
179487.687: ----13:18:07 09:04:2012 Detect DTMF: 12CA--------------------------------
А в представленном ниже куске лога метка DTMF_Start_block не была опознана?
Да, если судить по имеющемуся куску лога, то метка не обнаружилась.

PS
К нам недавно обратился один из пользователей, который также работает по DTMF-меткам на RU.TV Жалуется, что метки периодически не ловятся.
Сейчас разбираемся.
Есть ли у вас какие-нибудь контакты технических специалистов RU.TV?
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

Жалуется, что метки периодически не ловятся.
Есть такое дело
Есть ли у вас какие-нибудь контакты технических специалистов 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
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

Спасибо. Мы уже получили данные контакты от одного из наших пользователей. Будем связываться с представителями RU-TV для обсуждения сложившейся ситуации.
Ответить