Вопрос: Измерение расстояния от микрофона до колонки

Тема в разделе "C/C++/C#", создана пользователем FroLe, 28 ноя 2010.

Статус темы:
Закрыта.
  1. FroLe

    FroLe Гость

    такая задача:
    Написать программу для вычисления расстояния между колонками и микрофоном(на с++). Т.е. говоришь в микрофон и нам выводит расстояние.
    Можете подсказать какие библиотеки здесь задействовать? и реально это вообще написать, найти, скачать?
     
  2. BashOrgRu

    BashOrgRu Well-Known Member

    Регистрация:
    15 мар 2009
    Сообщения:
    78
    Симпатии:
    0
    Как я понимаю, задача состоит в том, чтобы человек говорит что-то в микрофон, колонки это воспроизводят, микрофон опять же ловит звук от колонок и по этим двум опорным точкам вычисляется время между началом издавания звука колонками и началом воспринятия микрофоном звука) Только вряд ли решаема, вам нужно будет найти таймер, который будет вычислять время с точностью до нано секунд, так как скорость звука - 300м/c.
     
  3. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Могу по этой теме ответить коротко и ясно :
    1) Скорость света 300, 000 , 000 м/cек (она же и скорость эл. тока) это пусть от микрофона до динамика (как вы понимаете, он ничтожно мал даже по отношению к прохождению диаметра земли)
    2) Скорость звука 1200 км/ч (конечно значительно мешьше чем скорость света), но все же, на ничтожно малые "концертные" промежутки ни как не влияет...
     
  4. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    2 ALL, Народ, ну может у кого все же есть идеи по задачи автора....
    Лично свое мнение я уже высказал, со скоростью эл. тока не посмотришь и ничтожно малые растояния (даже такие как расстояния от города до города) ни как не вычислишь....

    С другой стороны скорость звука это довольно медленная величина, и такие факторы как задержка к ней не плохо применимы....
    У меня AV ресивер дома например, с настройкой расстояния до колонок (с делением до 0.2 метра)... Тоесть рессивер создает задержку в мсекундах.... Что бы звук доходил до слушателя одновременно....

    Но с микрофоном, где идет эл. ток, мне лично кажется что расстояние можно измерить, только если датчик приема звука (микрофон) повесить на динамик... И разницу задержки уже мерить (тоесть учитывая скорость звука)
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    У меня есть идеи по этому поводу. Если на забуду, то вечером в воскресенье или в понедельник попробую их реализовать.
     
  6. ensane

    ensane Гость

    DarkKnight125
    Алгоритм решения задачи очень прост (см ответ от l1pton17): проигрываем в колонки звук и одновременно записываем звук с микрофона. Изучаем полученный входной сигнал и ищем момент начала получения нашего звука. Получаем задержку в миллисекундах. Умножаем на скорость звука и получаем искомое расстояние. Все просто. А теперь объясняю, почему это не сработает с обыкновенным компьютером:
    1. Микрофон выдает аналоговый сигнал, который звуковая карта оцифровывает. Звуковая карта использует внутренний буфер, как промежуточное хранилище, и пока он не заполнится - наружу сигнал не пойдет. Задержка небольшая и неощутимая для человеческого уха, но она есть (а на встроенных звуковухах этот лаг иногда даже на слух различим).
    2. Это нам только кажется, что на компьютере все работает одновременно. На самом деле, процессы выполняются по очереди и сменяют друг друга. И достаточно одного небольшого svchost, чтобы добавить еще пару милисекунд задержки для нашего звука.
    3. У меня расстояние от колонок до микрофона меньше полуметра. Задержка в прохождении звука по воздуху составит (с учетом скорости звука = 331 м/с) 0,5/331 = 1,5*10^(-3)с = 1,5мс. Лаг из-за всех вышеперечисленных обстоятельств составит в лучшем случае 5*10^(-3)c = 5мс, т.е. ошибка более чем в 3 раза превысит непосредственно измеренное значение!
     
  7. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    ensane
    Попытка - не пытка. Попробовать все-равно надо.
    Тема пока актуальна.
     
Загрузка...
Похожие Темы - Вопрос Измерение расстояния
  1. Генералл
    Ответов:
    2
    Просмотров:
    55
  2. ApplePen
    Ответов:
    0
    Просмотров:
    57
  3. gURaBA_N
    Ответов:
    3
    Просмотров:
    91
  4. ghost
    Ответов:
    1
    Просмотров:
    86
  5. kartaman
    Ответов:
    0
    Просмотров:
    127
Статус темы:
Закрыта.

Поделиться этой страницей