Я разрабатываю программное обеспечение, которое фиксирует исходящий звук (динамик) и определяет, есть ли какие-либо тона dtmf. Я использовал NAudio для захвата звука в виде массива байтов. Я хочу определить, есть ли в этом байтовом массиве тоны dtmf. Я уже гуглил и не нашел решения, близкого к моей проблеме. Tapiex (или любые коммерческие библиотеки) не вариант, так как я предпочел решение с открытым исходным кодом.
декодировать dtmf из массива байтов с помощью С#
Ответы (1)
Проведите частотный анализ и найдите два пика, указывающие на правильный ключ (см. Википедия для точных используемых частот; в большинстве случаев игнорируйте столбец 1633 Гц). Убедитесь, что тональные сигналы длятся не менее 100 мс, прежде чем вы их примете.
Частотный анализ см. в этом вопросе StackOverflow.
person
ioctlLR
schedule
06.03.2014
Я проверю ссылку, которую вы дали, спасибо. Но еще один вопрос: когда вы сказали искать два пика, указывающие на правильный ключ, вы имели в виду, например, проверить, существуют ли 697 и 1209 в массиве байтов, если я ищу DTMF 1?
- person jerzzz052888; 06.03.2014
Вы не сможете использовать массив байтов напрямую. Вероятно, его нужно будет преобразовать в float[]. Затем вам нужно будет рассчитать значения дБ для каждой интересующей вас частоты. Если вы используете алгоритм, связанный с другим вопросом, на который я ссылался, вам придется запускать его для каждой интересующей вас частоты и использовать его результаты, чтобы определить воспроизводимую клавишу, если таковая имеется.
- person ioctlLR; 06.03.2014