Оглавление:

Управляемый голосом семафор шрифта Брайля: 4 шага (с изображениями)
Управляемый голосом семафор шрифта Брайля: 4 шага (с изображениями)

Видео: Управляемый голосом семафор шрифта Брайля: 4 шага (с изображениями)

Видео: Управляемый голосом семафор шрифта Брайля: 4 шага (с изображениями)
Видео: Научитесь управлять своими деньгами как "Босоногий инвестор" (русские субтитры) 2024, Ноябрь
Anonim
Управляемый голосом, шаблонный семафор шрифта Брайля
Управляемый голосом, шаблонный семафор шрифта Брайля
Управляемый голосом семафор шаблона шрифта Брайля
Управляемый голосом семафор шаблона шрифта Брайля
Управляемый голосом семафор шаблона шрифта Брайля
Управляемый голосом семафор шаблона шрифта Брайля
Управляемый голосом, шаблонный семафор шрифта Брайля
Управляемый голосом, шаблонный семафор шрифта Брайля

«Лорд Ветинари стоял у своего окна, наблюдая за башней семафоров на другой стороне реки. Все восемь больших ставней, стоящих перед ним, яростно мигали - черные, белые, черные, белые, черные, белые… Информация летела в воздух. В двадцати милях позади него, на другой башне на Столате, кто-то смотрел в телескоп и выкрикивал числа. «Как быстро нас настигает будущее, - подумал он». Т. Пратчетт, Пятый слон

Создав джек-джек с голосовым управлением на основе голосового набора AIY, у меня возникла идея создать управляемый голосом семафор, объединяющий новейшие ИТ-технологии с зачатками телекоммуникаций и передачи данных.

Сначала у меня возникла идея воспроизвести французскую семафорную систему Chappe, которая была первой известной системой для общенациональных телекоммуникаций, использующей семафорную систему. Но это оказалось слишком сложно реализовать на стандартных сервоприводах за день. Моей следующей целью было что-то похожее на систему щелчков, описанную Терри Пратчеттом, например в "Going Postal", как семафорная система с затвором 2x4 (а не как матрица 4x4, изображенная в фильме). К сожалению, я не смог найти слишком много технических подробностей об этой системе. В итоге я остановился на матричной семафорной системе 2x3, разработанной лордом Мюрреем, которая некоторое время использовалась британским флотом. Кроме того, система с шестью затворами / битами хорошо сочетается с шестью серворазъемами, доступными на AIY voice HAT. Но так как у меня не было шести сервоприводов под рукой, я, наконец, решил сначала построить симулятор из светодиодов.

Что касается отображаемого кода, можно было использовать систему Мюррея, но, опять же, информация, которую я имел о ней, была довольно ограниченной и не позволяла отображать какие-либо числа и символы. Поэтому я пришел к выводу, что вместо этого я использовал систему Брайля, которая также использует матрицу 2x3 для отображения букв, цифр и других знаков. Система Брайля - это международный стандарт печати текстов, читаемых слепыми. Это также язык разметки, который использует числовой индикатор, чтобы определить, что числа будут отображаться следующими, а индикаторы, чтобы определить, что одна или несколько из следующих букв написаны заглавными буквами. Поэтому я решил создать немного упрощенную систему с числами и некоторыми знаками, определенными расширением Nemeth системы Брайля, и просто использовать буквы верхнего регистра, по крайней мере, для начала. Это позволяет иметь уникальные шаблоны для каждой буквы, числа или знака, которые будут отображаться в моем специальном приложении, и опустить анализ текста, необходимый для реального шрифта Брайля.

Последнее устройство позволяет произносить слово или предложение в систему распознавания голоса AIY, затем данные голосового шаблона отправляются через WLAN и Интернет на некоторый сервер Google в США, там декодируются и, по крайней мере, в моем случае, интерпретируются. данные отправляются обратно в Европу, где, наконец, я получаю распознанное предложение, отображаемое в виде текстовой строки. Эта текстовая строка затем разбивается скриптом Python на отдельные буквы, и теперь, по сравнению со словарем, определяющим соответствующие шаблоны, информация о шаблоне извлекается, и шаблоны отображаются на светодиодной матрице 2x3. Пожалуйста, посмотрите сопроводительное видео.

Я установил скорость отображения одного символа в секунду, что должно быть достаточно долго, чтобы обученный человек мог идентифицировать и перевести шаблон. Следующим возможным шагом было бы использование устройства распознавания образов, такого как AIY vision HAT (пока недоступно в Европе), для автоматического считывания и интерпретации образов, чтобы замкнуть круг.

Дальнейшие концепции улучшений, некоторые из которых имеют большее значение для реального мира, обсуждаются в части «перспективы» данного руководства.

Шаг 1: Используемые материалы

Используемые материалы
Используемые материалы
Используемые материалы
Используемые материалы

Малина Pi 3

Голосовая шляпа AIY

Восемь белых светодиодов диаметром 5 мм. Они работают от 3 В, поэтому требуется резистор.

Резистор 100кОм. Может быть, не идеальное решение, но было под рукой.

Соединительные кабели

Короткий кусок проволоки

Макетная плата, необязательно для проверки настройки.

Пластиковая коробка для визиток.

Два куска пенопласта толщиной 4 мм, некоторые остались мусором.

Какой-то кусок пластиковой мембраны, как диффузор, как указано выше.

Паяльник и припой, нож.

Шаг 2. Настройка и использование

Настройка и использование
Настройка и использование
Настройка и использование
Настройка и использование
Настройка и использование
Настройка и использование

Настройте Raspberry Pi и AIY HAT, как указано в руководстве AIY voice HAT. Я бы рекомендовал припаять заголовки хотя бы к сервопортам перед сборкой Pi и HAT, поскольку это позволяет легко подключать сервоприводы, макетную плату или светодиоды.

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

Затем они были подключены к сервопортам на AIY voice HAT с помощью удлинительных кабелей, положительная сторона - к (внешним) контактам P in, отрицательный разъем - к одному из (внутренних) контактов заземления / минуса. Обратите внимание на прилагаемую схему.

Настоятельно рекомендую перед пайкой протестировать установку на макете.

Теперь мембрана, светодиодная пластина и герметизирующий слой были помещены в пластиковый бокс.

Поместите скрипт Braille_LED_1.py в папку src. В случае, если вам, возможно, придется сначала сделать скрипт исполняемым.

Теперь с помощью терминала Dev (!) Запускается программа Braille_LED_1.py. Введите src / Braille_LED_1.py и нажмите Enter.

Теперь вам будет предложено нажать кнопку поля AIY и произнести свое слово или предложение. С некоторой задержкой система повторит то, что было понято, и отобразит это на экране, а также букву за буквой на шести светодиодном дисплее.

Если вы укажете ключевое слово «Goodbye» вместо предложения, система скажет вам Goodbye, и программа будет закрыта.

Шаг 3: Код

Код
Код

Ниже вы найдете код, который позволяет вам разговаривать с голосовым устройством AIY и отображать распознанное предложение по буквам на маленьком «семафоре» с двумя светодиодами или матрице шрифта Брайля.

Код является производным от сценария, который я использовал для предыдущего проекта с использованием голосовой шапки AIY, являющейся производной от примера servo_demo.py, описанного в руководстве по AIY voice HAT.

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

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

#! / usr / bin / env python3

# Этот сценарий является адаптацией сценария servo_demo.py для голосовой HAT AIY, # оптимизирован для отображения символа типа Baille на основе AIY import aiy.audio import aiy.cloudspeech import aiy.voicehat from gpiozero import LED # from gpiozero import Button from time import sleep # Словарь: искусственно измененный алфавит Брайля, # числа и некоторые символы, взятые из расширения Nemeth для шрифта Брайля Braille_6A = {"": "123456", # пробел "A": "1", "B": "12 »,« C »:« 14 »,« D »:« 145 »,« E »:« 15 »,« F »:« 124 »,« G »:« 1245 »,« H »:« 125 », «I»: «24», «J»: «245», «K»: «13», «L»: «123», «M»: «134», «N»: «1345», «O» «:« 135 »,« P »:« 1234 »,« Q »:« 12345 »,« R »:« 1235 »,« S »:« 234 »,« T »:« 2345 »,« U »: «136», «V»: «1236», «X»: «1346», «Y»: «13456», «Z»: «1356», «W»: «2456», «#»: «3456» ", # Префикс номера, т.е. следующие знаки - числа", ":" 2 ",". ": "256", # Точка, конец предложения (ГБ) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # Следующая буква пишется заглавными буквами; Номер-стоп? "": "", # Код Брайля Немета представляет собой математическое расширение для 6-пунктового шрифта Брайля # см.: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Код Немета '1', «Запятая» шрифтом Брайля «2»: «23», «3»: «25», «4»: «256», «5»: «26», «6»: «235», # Nemeth '6', Брайля '!' «7»: «2356», «8»: «236», # Nemeth '8', шрифт Брайля '?' «9»: «35», «0»: «356», «+»: «346», «-»: «36», «/»: «34», «(»: «12356», «) ":" 23456 "," * ":" 1346 "# '*' - это символ с двумя образцами в Немете, здесь заменен на 'x' для исключения сбоев}" "" для простоты, стандартные шаблоны чисел Брайля приведены ниже были заменены соответствующими кодами Немет "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64 + 34 #!" # Образец текста для целей отладки def main (): распознаватель = aiy.cloudspeech.get_recognizer () распознаватель.expect_phrase ('goodbye') # ключевое слово, завершающее программу button = aiy.voicehat.get_button () # Статус кнопки AIY led = aiy.voicehat.get_led () # Состояние индикатора кнопки AIY aiy.audio.get_recorder (). start () led_1 = LED (26) # 1-й разъем, servo0, GPIO 26 # верхний левый led_2 = LED (6) # 2-й разъем, servo1, GPIO 06 # средний левый led_3 = светодиод (13) # 3-й разъем, servo2, GPIO 13 # нижний левый led_4 = светодиод (5) # 4-й разъем, servo3, GPIO 05 # верхний правый led_5 = светодиод (12) # 5-й разъем, servo4, GPIO 12 # средний правый led_6 = светодиод (24) # 4-й разъем, servo3, GPIO 13 # нижний правый # расстояние = кнопка (5) # датчик расстояния, подключенный к servo3 / GPIO 05, здесь не используется aiy.audio.say («Привет!»,) Aiy.audio.say («Чтобы начать, нажмите кнопку»,) aiy.audio.say («Если вы скажете мне до свидания, я завершу программу»,) while True: # запускается loop led.set_state (aiy.voicehat. LED. BLINK) print ("Чтобы активировать распознавание голоса n, нажмите синюю кнопку, затем произнесите ") print () button.wait_for_press () print ('Прослушивание…') aiy.audio.say (" Я слушаю ",) led.set_state (aiy.voicehat. LED. BLINK_3) text = распознаватель.recognize () # текстовая строка распознанного предложения led.set_state (aiy.voicehat. LED. OFF), если текст None: aiy.audio.say ('Извините, я вас не слышал.',) elif 'до свидания' в тексте: aiy.audio.say ("До свидания",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bye! ') break # останавливает цикл и завершает программу else: print (' Вы сказали "', text,'" ') # Позволяет вам проверить интерпретацию системы, включая каптификацию aiy.audio.say (' Я думаю, вы сказали ',) aiy.audio.say (text,) # акустическая проверка Text_up = text.upper () # переводит все в верхний регистр print (Text_up) Text_Len = len (Text_up) print (Text_Len) для i в диапазоне (Text_Len): Lett = Text_up # Выбирает одну букву, начиная с первой, т.е. [0] print ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Выбирает соответствующий код из толковый словарь. Отсутствующий знак нарушит код! print (Lett_B) if ("1" в Lett_B): print ("LED 1") led_1.on () # активирует светодиод на servo0 ", если" 2 "в Lett_B: print (" LED 2 ") led_2.on () если «3» в Lett_B: print («LED 3») led_3.on () если «4» в Lett_B: print («LED 4») led_4.on () если «5» в Lett_B: print («LED 5 ") led_5.on () if" 6 "в Lett_B: print (" LED 6 ") led_6.on () sleep (1) # шаблон отображения для второго print () led_1.off () # отключить все светодиоды на servos0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () sleep (0.3) # короткий темный перерыв, чтобы обозначить конец буквы, если _name_ == '_main_ ': главный()

Шаг 4: прогноз и примечания

Так что же может быть дальше?

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

- улучшено программирование, так что текст переведен в стандартный код Брайля, со всеми разметками и сжатием. Для опытного программиста на Python это не должно стоить больших усилий, а я - нет, поэтому любая помощь будет приветствоваться.

- развернуть систему до матрицы 2х4. Также должно быть возможно и поможет использовать соответствующие 8-точечные коды Брайля, которые используются в электронных дисплеях Брайля. Выше это было бы немного ближе к системе щелчков Dearheart.

- построить настоящий дисплей Брайля 2x3 или 2x4. Должно быть возможно использование либо массива сервоприводов, либо массива мини-соленоидов на 5 В. Основная проблема будет заключаться в том, что стандартное расстояние между тактильными точками на электронных дисплеях составляет 2,45 мм или 1/10 дюйма, поэтому могут потребоваться некоторые механизмы и механизмы. Другой проблемой может быть точное регулирование длины нажатия.

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

- сконструировать механическую систему затвора, напоминающую системы Мюррея или Дирхарта. Использование сервоприводов не должно быть слишком сложным и может быть описано в другом руководстве. Или может быть хороший школьный проект. Кому-нибудь интересно?

–――――

Некоторые замечания и интересные ссылки:

- Есть инструкция, описывающая «самодельный семафорный фонарь», светодиодную матрицу 2х4, основанную на какой-то демонстрационной плате Propeller. Мне нравится макет, но программирование мне кажется немного сложным. Пожалуйста, посмотрите сами.

- Теперь я нашел программу на Python для генерации полностью сокращенного (2-го уровня) шрифта Брайля. К сожалению, он ограничен Python 2 и американской английской версией 2002 года:

- более полная программа кажется liblouis, https://github.com/liblouis/liblouis, но я не знаю, как интегрировать это в это решение.

- интересное решение для Python, похоже, пришло из Греции, https://github.com/ant0nisk/pybrl может интегрировать несколько языков и генерировать шрифт Брайля 2-го уровня.

- Я не программист и не электронщик, и несколько дней назад у меня не было особых знаний о шрифте Брайля.

Так что если вы заметите какие-либо ошибки, упущения или у вас есть идеи для проекта, сообщите мне.

- Если вам понравилась эта инструкция, проголосуйте за нее!

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