• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

FroLe

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

BashOrgRu

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

DarkKnight

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

DarkKnight

2 ALL, Народ, ну может у кого все же есть идеи по задачи автора....
Лично свое мнение я уже высказал, со скоростью эл. тока не посмотришь и ничтожно малые растояния (даже такие как расстояния от города до города) ни как не вычислишь....

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

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

lazybiz

У меня есть идеи по этому поводу. Если на забуду, то вечером в воскресенье или в понедельник попробую их реализовать.
 
E

ensane

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

lazybiz

ensane
Попытка - не пытка. Попробовать все-равно надо.
Тема пока актуальна.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!