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

  • Автор темы FroLe
  • Дата начала
Статус
Закрыто для дальнейших ответов.
F

FroLe

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

BashOrgRu

Well-known member
15.03.2009
77
0
#2
Как я понимаю, задача состоит в том, чтобы человек говорит что-то в микрофон, колонки это воспроизводят, микрофон опять же ловит звук от колонок и по этим двум опорным точкам вычисляется время между началом издавания звука колонками и началом воспринятия микрофоном звука) Только вряд ли решаема, вам нужно будет найти таймер, который будет вычислять время с точностью до нано секунд, так как скорость звука - 300м/c.
 

DarkKnight

Well-known member
01.08.2010
653
0
#3
Могу по этой теме ответить коротко и ясно :
1) Скорость света 300, 000 , 000 м/cек (она же и скорость эл. тока) это пусть от микрофона до динамика (как вы понимаете, он ничтожно мал даже по отношению к прохождению диаметра земли)
2) Скорость звука 1200 км/ч (конечно значительно мешьше чем скорость света), но все же, на ничтожно малые "концертные" промежутки ни как не влияет...
 

DarkKnight

Well-known member
01.08.2010
653
0
#4
2 ALL, Народ, ну может у кого все же есть идеи по задачи автора....
Лично свое мнение я уже высказал, со скоростью эл. тока не посмотришь и ничтожно малые растояния (даже такие как расстояния от города до города) ни как не вычислишь....

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

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

lazybiz

Well-known member
03.11.2010
1 339
0
#5
У меня есть идеи по этому поводу. Если на забуду, то вечером в воскресенье или в понедельник попробую их реализовать.
 
E

ensane

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

lazybiz

Well-known member
03.11.2010
1 339
0
#7
ensane
Попытка - не пытка. Попробовать все-равно надо.
Тема пока актуальна.
 
Статус
Закрыто для дальнейших ответов.