Оглавление:

Система Camara с функцией распознавания говорящего (SPACS): 8 шагов
Система Camara с функцией распознавания говорящего (SPACS): 8 шагов

Видео: Система Camara с функцией распознавания говорящего (SPACS): 8 шагов

Видео: Система Camara с функцией распознавания говорящего (SPACS): 8 шагов
Видео: 25 фишек и скрытых функций iPhone 15 Pro Max! Опыт использования iPhone 15 Pro Max 2024, Ноябрь
Anonim
Image
Image
Аппаратное обеспечение - 3D-печать
Аппаратное обеспечение - 3D-печать

Представьте себе конференц-связь, в которой несколько выступающих окружают одну камеру. Мы часто сталкиваемся с тем, что ограниченный угол обзора камеры часто не позволяет взглянуть на говорящего. Это аппаратное ограничение значительно ухудшает взаимодействие с пользователем. Если камера может смотреть на активных выступающих, удаленная аудитория будет более вовлечена в разговор во время разговора. В этом проекте мы предлагаем (прототип) систему камеры, которая обнаруживает активного говорящего и следует за ним, поворачивая камеру к говорящему. В системе используется как визуальный, так и звуковой подход. Когда камера обнаруживает лица, она определяет говорящего и вычисляет угол поворота. Когда лица не обнаруживаются под текущим углом, система ищет говорящего на основе направления приходящих аудиосигналов.

Шаг 1: материалы

Adafruit Feather nRF52840 Express X 1

www.adafruit.com/product/4062

Электретный микрофонный усилитель - MAX4466 X 2

www.adafruit.com/product/1063

Микро-серводвигатель X 1

www.adafruit.com/product/169

Смартфон Android X 1

Шаг 2. Аппаратное обеспечение - 3D-печать

Аппаратное обеспечение - 3D-печать
Аппаратное обеспечение - 3D-печать
Аппаратное обеспечение - 3D-печать
Аппаратное обеспечение - 3D-печать

Для быстрой реализации мы решили напечатать нужные нам корпуса на 3D-принтере. Корпус состоит из двух основных компонентов; проигрыватель винила и подставка для смартфона. Мы использовали поворотный стол по этой ссылке (https://www.thingiverse.com/thing:141287), где он предоставляет корпус Arduino внизу и вращающийся стол, который можно соединить с серводвигателем. Мы использовали подставку для смартфона по этой ссылке (https://www.thingiverse.com/thing:2673050), которая складывается и регулируется по углу, что позволяет нам удобно откалибровать угол. На рисунке ниже показаны детали, напечатанные на 3D-принтере, собранные вместе.

Шаг 3. Аппаратное обеспечение - электронные компоненты

Аппаратное обеспечение - электронные компоненты
Аппаратное обеспечение - электронные компоненты
Аппаратное обеспечение - электронные компоненты
Аппаратное обеспечение - электронные компоненты

Есть четыре проводных компонента; Adafruit Feather, два микрофона и мотор. Для компактной упаковки мы спаяли (серые кружки) провода без использования макета. Ниже описывается принципиальная схема и собственно артефакт.

Шаг 4: Программное обеспечение

Наша система в первую очередь использует визуальную информацию от распознавания лиц, чтобы следить за говорящим, поскольку она более точна. Чтобы перо получало визуальную информацию из приложения для Android, мы используем Bluetooth Low Energy в качестве основного метода связи.

При обнаружении лица приложение вычисляет угол, на который двигатель должен повернуть, чтобы сфокусировать динамик в центре кадра. Мы разложили возможные сценарии и поступили следующим образом:

  1. Если лицо (а) обнаружено и говорит, он вычисляет среднюю точку динамиков и возвращает относительный угол в Feather.
  2. Если лицо (а) обнаружено, но никто из них не говорит, он также вычисляет среднюю точку лиц и возвращает угол соответственно.
  3. Если какое-либо лицо не обнаружено, система меняет логику слежения за говорящим с визуальной на звуковую.

Программное обеспечение SPACS находится по адресу

Шаг 5: Программное обеспечение - Звук

Программное обеспечение - Звук
Программное обеспечение - Звук

Звук (YH)

Чтобы определить источник входящего звука, мы сначала попытались использовать разницу во времени между двумя микрофонами. Но это было не так точно, как мы ожидали, поскольку частота дискретизации (~ 900 Гц) Arduino Leopard, где мы тестировали звуковые сигналы, была медленной, так что он не мог уловить разницу во времени между микрофонами, расположенными на расстоянии 10 см.

Мы изменили план, чтобы использовать разницу в интенсивности между двумя входными звуковыми сигналами. В результате перо принимает два звуковых сигнала и обрабатывает их, чтобы определить, откуда исходит звук. Обработку можно описать следующими этапами:

  1. Возьмите входы от двух микрофонов и вычтите смещение, чтобы получить амплитуды сигналов.
  2. Накопите абсолютные значения амплитуд на микрофон для 500 датчиков.
  3. Сохраните разницу накопленных значений в очереди, имеющей 5 слотов.
  4. Верните сумму очередей в качестве окончательного значения разницы.
  5. Сравните окончательное значение с порогами, чтобы решить, откуда исходит звук.

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

Шаг 6: Программное обеспечение - Обнаружение лица и речи

Для распознавания лиц мы использовали ML Kit для Firebase, выпущенный Google (https://firebase.google.com/docs/ml-kit). ML Kit предоставляет API обнаружения лиц, который возвращает ограничивающую рамку каждого лица и его ориентиры, включая глаза, нос, уши, щеки и различные точки на рту. После обнаружения лиц приложение отслеживает движение рта, чтобы определить, говорит ли человек. Мы используем простой подход на основе пороговых значений, который обеспечивает надежную работу. Мы использовали тот факт, что движение рта увеличивается как по горизонтали, так и по вертикали, когда человек говорит. Мы вычисляем вертикальное и горизонтальное расстояние рта и вычисляем стандартное отклонение для каждого расстояния. Расстояние нормализовано по размеру лица. Большее стандартное отклонение означает говорение. Этот подход имеет ограничение, заключающееся в том, что каждое действие, связанное с движением рта, включая еду, питье или зевание, можно распознать как говорение. Но у него низкий уровень ложноотрицательных результатов.

Шаг 7: Программное обеспечение - вращающийся двигатель

Программное обеспечение - Rotating Motor
Программное обеспечение - Rotating Motor

Вращение двигателя оказалось не таким простым, как мы ожидали, из-за контроля скорости вращения. Чтобы контролировать скорость, мы объявляем глобальную переменную счетчика, которая позволяет двигателю вращаться только тогда, когда переменная достигает определенного значения. Мы также объявили еще одну глобальную переменную, указывающую, движется ли двигатель, чтобы сообщить микрофонам, чтобы они могли избежать звука, исходящего от вращения двигателя.

Шаг 8: Будущие улучшения

Одним из ограничений является то, что двигатель начинает раскачиваться под определенными углами. Кажется, что двигатель недостаточно мощный, чтобы преодолеть крутящий момент, создаваемый вращением смартфона. Это можно решить, используя более мощный двигатель или отрегулировав положение смартфона по направлению к центру вращения, чтобы уменьшить крутящий момент.

Обнаружение направления звука на основе звука можно улучшить с помощью более сложного метода. Мы хотели бы попробовать акустический метод формирования луча, чтобы определить направление входящего звука. Мы попробовали время прихода звуковых сигналов. Но частота дискретизации Feather ограничена для определения разницы во времени, когда микрофоны находятся всего на расстоянии около 10 см.

Последней недостающей частью этого прототипа является оценка удобства использования. Один из многообещающих способов оценки - интеграция системы с существующей платформой для видеозвонков и наблюдение за ответами пользователей. Эти ответы помогут улучшить систему и сделать следующую итерацию этого прототипа.

Рекомендуемые: