|
Вопрос # 285/ вопрос открыт / |
|
Доброе время суток,Эксперты! Может кто поможет... Мне очень нужно распознать тоновый сигнал (DTFM) поступающий на вход звуковай карты... помогите пожайлуста.. за ранее спасибо!
 |
Вопрос задал: Андрей Сергеевич (статус: Посетитель)
Вопрос отправлен: 24 января 2007, 19:47
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Не скажу, что это сделать просто, но алгоритм прост и я думаю справитесь. Для начала нужно захватить звук с звуковой карты. Для этого можно кодить напрямую, а можно взять готовые компоненты, которые помогут "оцифровать" звук ACMPack.(брать тут http://www.torry.net/vcl/mmedia/audio/acmcomponents16.zip - всё бесплатно+исходнички.) Для начала рекомендую писать вначале в файл и разбирать потом с файла, а позже нучитесь и налету.
Дальше нам нужно узнать, что такое прямое преобразование Фурье. Это вообщето в курсе математики учат, но нам достаточно знать, что это преобразование преобразует из временного преставления в спектральное. А вот в спектральном представлении DTFM выглядит красиво. DTFM - это комбинация двух частот, поэтому в спектре - это два отсчёта. Причём их положение зависит от частоты. Сами частоты берём отсюдова http://ru.wikipedia.org/wiki/DTMF
А теперь идея декодирования.
Зачитываем с буфера небольшой фрагмент (полсекунды - секунда - подбираем опытным путём)
Делаем преобразования фурье
Ищем пики на интересующих нас частотах (Полосок вы не получите, а будет что то похожее на "верблюда" + частота может немного уплывать, не забывайте об этом)
выписываем их. Если получили больше 2 частот - значит произошло переключение и мы на него попали. Эсли постоянно попадаем - уменьшаем интервал.
Всё, осталось только записать.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 24 января 2007, 20:15
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|