Микрофон Android для улавливания определенного тона
-
27-10-2019 - |
Вопрос
Здравствуйте. Мне было интересно, можно ли с помощью класса тон-генератора Android создать тон на одном устройстве и прослушивать этот же тон на другом устройстве.Если возможно, у меня есть еще несколько вопросов.
Принимая во внимание фоновый шум, можно ли слушать только этот конкретный тон?
Будет ли этот процесс затратным?
Могу ли я использовать тон, который будет не слышен для человеческого уха или близок к нему?
Наконец, можно ли использовать тон, который можно будет услышать только на расстоянии пары футов от передающего устройства?
Большое спасибо, что уделили время, парни и девушки :)
Изменить> Спасибо за добавление тега обработки звука sabastian.Намного лучшее описание.
Решение
Да, это потребует много ресурсов ЦП. Путь к этому довольно прост: вам нужен постоянный регистратор, который переводит полученные данные в БПФ (быстрое преобразование Фурье). БПФ в основном делает одно: разбивает звук по шкале частоты / мощности. С этим результатом «фоновый шум очищен» вы можете проверить такие вещи, как «был ли тон с частотой 1000 Гц, играющий по крайней мере 2 секунды» - и действовать соответственно. Здесь есть разумная реализация быстрого преобразования Фурье: http://www.badlogicgames.com/wordpress/? p= 449 БПФ также может использоваться (фактически, используется IS) для обнаружения двухтонального набора (DTMF) - 2 частоты одновременно намного лучше, чем просто использовать одну (поскольку частота ошибок значительно снижается, и вы можете перейти к более короткой продолжительности для отправки тонального сигнала / обнаружение).
"Неслышно" будет невозможно, так как (а) динамик не может воспроизводить такие звуки (б) вы ограничены в частоте дискретизации - так же ограничены как при воспроизведении, так и при записи таких высоких частот.
Естественно наложится "пара футов" (не очень громкий динамик, не очень хороший микрофон).
Другие советы
Обратите внимание на другой вопрос: «Android: необходимо записать вход с микрофона».Я думаю, вы можете изменить это для своей задачи, тогда с помощью звуковых байтов вы можете фильтровать или БПФ.
Надеюсь, это поможет