Этот День Независимости был другим. Я вернулся домой. И у меня появились навыки, которых раньше у меня не было. Поэтому я подумал о том, чтобы совместить празднование Дня независимости с моими новыми навыками работы с данными.

Кроме того, мне нечего было делать в праздничный вечер.

Я построил систему, которая узнала меня и отца нашей нации Махатму Ганди и после узнавания сказала о нас несколько строк. Вот об этом. Я знаю, это не что-то очень необычное, но за ограниченное время в пару часов, я думаю, это достойный проект.

Позвольте мне разделить описание моего проекта на две существенные части. Сначала мы рассмотрим часть распознавания лиц, а затем рассмотрим часть речи. Я не буду вдаваться в подробности того, как технология на самом деле работает за кулисами, потому что тогда мне придется превратить этот пост в блоге в книгу, но это в другой раз. Вместо этого я просто объясню, как я заставил это работать, и, возможно, вы тоже сможете это сделать! Давайте начнем.

Распознавание лица

Для распознавания лиц я использовал потрясающую библиотеку face_recognition Адама Гейтгея на Python. Его библиотека face_recognition построена поверх dlib библиотеки C++, созданной Дэвисом Кингом. Если вам интересно узнать, как он на самом деле распознает лица из видео и изображений, у Адама Гейтгея есть запись в блоге об этом. Я бы порекомендовал вам сначала пройти его, прежде чем начинать свой проект. Это поможет вам сформировать интуитивное представление о том, что вы будете создавать с помощью этой библиотеки.

Вы можете прочитать это здесь: https://medium.com/@ageitgey/machine-learning-is-fun-part-4-modern-face-recognition-with-deep-learning-c3cffc121d78.

И вы можете проверить библиотеку face_recognition здесь: https://github.com/ageitgey/face_recognition

Поэтому в моем конкретном случае мне потребовался пример изображения Махатмы Ганди и меня самого, чтобы иметь возможность запустить систему распознавания лиц. Чтобы получить изображения Ганди, мне пришлось выполнить небольшой поиск изображений в Google. А для моей фотографии, ну, я просто должен был сделать селфи!

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

Хорошо, на этом мы закончили часть проекта по распознаванию лиц!

Текст

Я хотел, чтобы компьютер считывал что-то после того, как узнает мое лицо и лицо Махатмы Ганди. Для Махатмы Ганди я использовал REST API Википедии, чтобы получить абзац из его биографии в Википедии. Я использовал библиотеку запросов в python для выполнения вызовов API. Поскольку у меня нет страницы в Википедии, посвященной мне, я решил передать сообщение людям, которые боролись за независимость Индии. Я использовал Google переводчик, чтобы получить сообщение на хинди.

Давайте теперь посмотрим, как мы можем преобразовать эти тексты в речь.

Текст в речь

В Python есть несколько библиотек, которые помогут вам преобразовать текст в речь. В этом случае я попробовал pyttsx3 и gTTS и, наконец, выбрал gTTS. Я нашел голос в pyttsx3 немного более роботизированным. Pyttsx3 полезен, когда вывод должен быть сделан в автономном режиме. С другой стороны, gTTS — это инструмент командной строки для взаимодействия с API преобразования текста в речь Google Translate. Он записывает разговорные mp3-данные в файл.

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

Я поэкспериментировал с несколькими и обнаружил, что pygame полезен для загрузки mp3-файла и его воспроизведения. Последняя часть головоломки была решена, и теперь у меня была готовая система.

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

Я взломал способ. Я инициализировал значение флага равным 0, а затем установил его равным 1, когда лицо было распознано. Это решило проблему повторения преобразования tts для каждого кадра, но это довольно хакерски. Дайте мне знать, если вы можете придумать лучшее решение!

Вывод

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

Чтобы узнать больше о данных и мире, следите за мной здесь: https://medium.com/@Imaadmkhan1.

Чтобы регулярно получать интересный контент о науке о данных и машинном обучении, подписывайтесь на меня в LinkedIn. Вы можете найти мой LinkedIn здесь: https://in.linkedin.com/in/imaad-mohamed-khan-218b3999

Вы можете найти код для проекта здесь:

https://github.com/imaadmkhan1/independence-day-project/