| 
| 
 | Вопрос # 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
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |