Оглавление:

Распознавание речи: 12 шагов
Распознавание речи: 12 шагов

Видео: Распознавание речи: 12 шагов

Видео: Распознавание речи: 12 шагов
Видео: Пётр Жижин и Степан Каргальцев: CTC-трансформер ​для распознавания речи​ (Яндекс) 2024, Ноябрь
Anonim
Распознаватель речи
Распознаватель речи

Всем привет………

Это моя вторая инструкция, которую я публикую

Так что приветствую всех…

В этом руководстве я расскажу вам, как создать распознаватель голоса с помощью платы Arduino.

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

Итак, для людей, у которых нет опыта использования Arduino:

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

Arduino запрограммирован в среде, разработанной ими самими, которую можно легко загрузить с их веб-сайта

Шаг 1. Как настроить среду?

Как настроить среду?
Как настроить среду?
Как настроить среду?
Как настроить среду?
Как настроить среду?
Как настроить среду?
Как настроить среду?
Как настроить среду?

Просто поищите в гугле "скачать ардуино"

Нажмите «Arduino - Программное обеспечение»

Вы увидите «Загрузить IDE Arduino»

Выбирайте в зависимости от вашей операционной системы

Скачайте и установите

Итак, вы успешно установили программное обеспечение, и вы можете написать свой код для Arduino, а с помощью кабеля вы можете подключить плату Arduino к компьютеру и вставить код.

Шаг 2: Почему растет спрос на Arduino?

Недорого

Платы Arduino недорогие по сравнению с другими платформами микроконтроллеров. Это будет стоить всего около 50 долларов.

Кроссплатформенность

Программное обеспечение для Arduino работает в операционных системах Windows, Macintosh OS и Linux. Если мы подумаем о других системах микроконтроллеров, они будут работать только в Windows или, другими словами, ограничены только окнами.

Программное обеспечение с открытым исходным кодом и расширяемое программное обеспечение

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

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

Arduino IDE (программное обеспечение, о котором мы уже обсуждали….) Легко использовать для людей, включая новичков, поскольку большое количество ресурсов предоставляется самими Arduino, которые доступны в Интернете бесплатно. Так что не стесняйтесь узнавать больше. об этом.

Открытый исходный код и расширяемое оборудование

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

Шаг 3: Начнем !!!!

Итак, я уже сказал, что этот проект в основном ориентирован на распознавание голоса с использованием Arduino и позволяет ему выполнять некоторые задачи.

Говоря более четко ……

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

Шаг 4: Необходимые компоненты

Необходимые компоненты
Необходимые компоненты
Необходимые компоненты
Необходимые компоненты
Необходимые компоненты
Необходимые компоненты

Основные компоненты, необходимые для этого проекта:

Arduino Due x 1

Электретный микрофонный прорыв Spark Fun x 1

Spark Fun Mono Audio Amp Breakout x 1

Динамик: 0,25 Вт, 8 Ом x 1

Макетная плата x 1

Светодиод 5 мм: красный x 3

Резистор 330 Ом x 3

Провода перемычки x 1

Паяльник x 1

BitVoicer Сервер

Это сервер распознавания и синтеза речи для автоматизации речи.

Шаг 5: Как это работает?

1. Обнаруживаются звуковые волны, затем они улавливаются и усиливаются платой Sparkfun Electret Breakout.

2. Усиленный сигнал, полученный в результате описанного выше процесса, будет оцифрован и буферизован / сохранен на плате Arduino с использованием имеющегося в ней аналого-цифрового преобразователя (АЦП).

3. Аудио образцы будут предоставлены на сервер BitVoicer через имеющийся последовательный порт Arduino.

4. BitVoicer Server обработает аудиопоток, а затем распознает содержащуюся в нем речь.

5. Распознанная речь будет сопоставлена с командами, которые уже были определены ею ранее, затем она будет отправлена обратно в Arduino. Если одна из команд состоит в синтезировании речи, BitVoicer Server подготовит аудиопоток и отправит его на Arduino.

6. Arduino определит предоставленные команды и выполнит определенные соответствующие действия. Если аудиопоток получен, он будет помещен в очередь в класс BVS Speaker и воспроизведен с использованием DUE DAC и DMA.

7. Монофонический аудиоусилитель SparkFun усиливает сигнал ЦАП, чтобы он мог управлять динамиком 8 Ом и быть слышным через него.

Шаг 6: Подключение компонентов

Подключение компонентов
Подключение компонентов
Подключение компонентов
Подключение компонентов

Самый первый шаг - подключить различные компоненты к макетной плате, а также к плате Arduino, как показано на рисунке

Помните, что используемая здесь плата Arduino является DUE, существуют другие модели, которые были произведены Arduino, каждая из которых работает на разных уровнях напряжения

Большинство плат Arduino работают от 5 В, но DUE работает от 3,3 В

DUE уже использует аналоговое опорное напряжение 3,3 В, поэтому перемычка на вывод AREF не требуется

Извините, я забыл сказать, что контакт AREF - это «АНАЛОГОВЫЙ РЕФЕРЕНСНЫЙ ПИН», который присутствует на плате Arduino, как показано на следующем рисунке (это Arduino UNO, но он похож на аналогичный сайт в случае DUE)

Вывод AREF на DUE подключен к микроконтроллеру через резистивный мост

Чтобы использовать вывод AREF, резистор R1 необходимо отсоединить от печатной платы [Printed Circuit Board]

Шаг 7: Предоставление кода плате Arduino

Предоставление кода плате Arduino
Предоставление кода плате Arduino

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

Сделать это очень просто, я подробно объясню каждому из них, что они делают и как работают.

Как установить библиотеку?

Итак, перед этим мы должны знать, как установить библиотеки BitVoicer Server в Arduino IDE, то есть в программное обеспечение Arduino.

Итак, для этого откройте Arduino IDE

На верхней панели нажмите «Эскиз»

Затем нажмите «Включить библиотеку»

После этого нажмите «Управление библиотекой»

Затем откроется менеджер библиотек, и мы увидим список библиотек, готовых к установке или уже установленных

Найдите библиотеку для установки и выберите номер версии

Здесь мы устанавливаем библиотеки BitVoicer Server, необходимые для этого проекта

Как импортировать библиотеку.zip?

Библиотеки также могут распространяться в виде ZIP-файла или папки

Имя папки - это имя библиотеки

Внутри папки будет файл.cpp, файл.h и часто файл keywords.txt, папка примеров и другие файлы, необходимые для библиотеки

Начиная с версии 1.0.5 Arduino IDE, вы можете устанавливать в нее сторонние библиотеки

Не разархивируйте загруженную библиотеку, оставьте как есть

Для этого перейдите в эскиз> Включить библиотеку> Добавить библиотеку.zip.

Выберите расположение файла.zip и откройте его.

Вернитесь в меню Sketch> Import Library.

Если он правильно импортирован, эта библиотека должна отображаться в нижней части раскрывающегося меню при навигации.

Шаг 8: программа / эскиз

Это программа, которую нужно загрузить в Arduino.

Это можно сделать, просто подключив плату Arduino к компьютеру и загрузив ее на плату.

Шаг 9: Что насчет написанных кодов?

Теперь давайте посмотрим, что на самом деле делает каждая из функций, написанных в коде ………..

Ссылки на библиотеки и объявление переменных

Прежде чем говорить об этом, мы должны знать и понимать некоторые основные термины, в том числе:

  • БВСП

    Это библиотека, которая дает нам почти все ресурсы, необходимые для обмена информацией с сервером BitVoicer

    Существует протокол, известный как протокол сервера BitVoicer, который реализуется через класс BVSP. Это необходимо для взаимодействия с сервером

  • BVSMic

    Это библиотека, которая реализует все необходимое для записи звука с помощью аналого-цифрового преобразователя (АЦП) Arduino

    Этот звук хранится во внутреннем буфере класса, и его можно извлечь, а затем отправить в механизмы распознавания речи, доступные на сервере BitVoicer

  • BVSSpeaker

    Это библиотека, содержащая все основные ресурсы, необходимые для воспроизведения аудиопотоков, отправляемых с сервера BitVoicer

    Для этого на плате Arduino должен быть встроенный цифро-аналоговый преобразователь (ЦАП)

    Arduino DUE - единственная плата Arduino со встроенным ЦАП

Библиотеки BVSP, BVSMic, BVSSpeaker и DAC, ссылки на них написаны в первых четырех строках, составляющих начало программы

Когда вы устанавливаете BitVoicer Server, вы можете найти BitSophia, который предоставляет все эти четыре библиотеки

Когда пользователь добавляет ссылку на библиотеку BVSSpeaker, автоматически вызывается библиотека DAC, о которой говорилось ранее

Класс BVSP используется для связи с BitVoicer Server

Класс BVSMic используется для захвата и хранения аудио

Класс BVSSpeaker используется для воспроизведения звука с помощью ЦАП Arduino DUE

2. функция настройки

Функция настройки используется для выполнения определенных действий, например:

Чтобы установить режимы вывода и их начальные состояния

Для инициализации последовательной связи

Для инициализации класса BVSP

Для инициализации класса BVSMic

Для инициализации класса BVSSpeaker

Он также устанавливает «обработчики событий» (указатели на функции) для событий frameReceived, modeChanged и streamReceived класса BVSP

Шаг 10: функция цикла

Выполняет пять основных операций:

1. Функция keepAlive ()

Эта функция предназначена для запроса у сервера информации о статусе.

2. Функция receive ()

Эта функция проверяет, отправил ли сервер какие-либо данные или нет. Если сервер отправил какие-либо данные, он их обработает.

3. Функции isSREAvailable (), startRecording (), stopRecording () и sendStream ()

Эти функции используются для управления различными настройками записи звука, и после того, как он достигнет звука, он отправит этот звук на сервер BitVoicer.

4. функция play ()

Эта функция используется для воспроизведения звука, поставленного в очередь в классе BVSSpeaker.

5. playNextLEDNote ()

Эта функция используется для управления миганием светодиода.

6. Функция BVSP_frameReceived

Эта функция вызывается каждый раз, когда функция receive () начинает определять, что был получен один полный кадр. Здесь мы выполняем команды, полученные от BitVoicer Server. Команды, которые управляют миганием светодиодов, имеют длину 2 байта. В этом первом байте указывается контакт, а второй байт указывает значение контакта. Здесь мы используем функцию analogWrite (), чтобы установить соответствующее значение для контакта. В это время мы также должны проверить, была ли получена команда playLEDNotes, имеющая тип Byte. Если он был получен, я устанавливаю для playLEDNotes значение true, и он будет отслеживать и отмечать текущее время. Это время будет использовано функцией playNextLEDNote для синхронизации светодиодов с песней.

7. Функция BVSP_modeChanged

Эта функция вызывается каждый раз, когда функция receive () определяет изменение режима в исходящем направлении (сервер Arduino). BitVoicer Server может отправлять данные или звук в кадрах на Arduino. Прежде чем связь переходит из одного режима в другой, BitVoicer Server отправляет сигнал. Класс BVSP идентифицирует этот сигнал и вызывает или отмечает событие modeChanged. В функции BVSP_modeChanged, если пользователь обнаруживает, что связь переходит из потокового режима в режим кадрирования, он / она будет знать, что звук закончился, поэтому пользователь может сказать классу BVSSpeaker прекратить воспроизведение звука.

8. Функция BVSP_streamReceived

Эта функция вызывается каждый раз, когда функция receive () определяет, что аудио образцы были получены. Он просто извлекает аудио и помещает их в очередь в класс BVSSpeaker, чтобы функция play () могла их воспроизвести.

9. Функция playNextLEDNote

Эта функция запускается только в том случае, если функция BVSP_frameReceived идентифицирует команду playLEDNotes. Он контролирует и синхронизирует светодиоды со звуком, отправленным с BitVoicer Server. Чтобы синхронизировать светодиоды со звуком и узнать правильное время, можно использовать бесплатное программное обеспечение Sonic Visualizer. Это позволяет нам наблюдать за звуковыми волнами, чтобы человек мог определить, когда была нажата клавиша пианино.

Шаг 11: Как импортировать объекты решения BitVoicer Server?

Теперь мы настроили улучшенный сервер BitVoicer для работы с Arduino.

Для сервера BitVoicer существует четыре основных объекта решения: местоположения, устройства, двоичные данные и голосовые схемы.

Давайте посмотрим на них подробнее:

Локации

Он представляет собой физическое местоположение, в котором устанавливается устройство.

Мы можем создать место под названием «Дом».

Устройства

Они считаются клиентами BitVoicer Server.

Подобно созданию местоположения, мы можем создать смешанное устройство, для простоты назовем его ArduinoDUE.

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

BinaryData - это тип команды, которую BitVoicer Server может отправлять на клиентские устройства. На самом деле это массивы байтов, которые можно связывать с командами.

Когда BitVoicer Server распознает речь, связанную с этой командой, он отправляет массив байтов на целевое устройство.

По этой причине я создал по одному объекту BinaryData для каждого значения вывода и назвал их ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff и так далее.

Поэтому мне пришлось создать 18 объектов BinaryData, поэтому я предлагаю вам загрузить и импортировать объекты из файла VoiceSchema.sof, который представлен ниже.

Так что же такое голосовая схема?

В голосовых схемах все сочетается. их основная роль - определять, как следует распознавать предложения и какие команды нужно запускать.

Для каждого предложения вы можете определить столько команд, сколько вам нужно, и порядок их выполнения.

Вы также можете определить задержки между каждой из предоставленных команд.

BitVoicer Server поддерживает только 8-битный моно PCM-звук (8000 отсчетов в секунду), поэтому потребуется преобразовать аудиофайл в этот формат, так как сегодня существует так много сборов за онлайн-конвертацию, и я рекомендую https://audio.online -convert.com/convert-to-wav.

Вы можете импортировать (Импорт объектов решения) все объекты решения, которые я использовал в этом проекте, из файлов ниже.

Один из них содержит устройство DUE, а другой - голосовую схему и ее команды.

Шаг 12: Заключение

Вот так !!!

Вы сделали потрясающий проект и можете с ним поговорить

Так что начни говорить ………………

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

Итак, я завершил свой второй инструктаж !!!!!!!!

Ага……

Думаю, все это поняли…

Если у кого-то есть какие-либо вопросы, пожалуйста, не стесняйтесь спрашивать меня

В следующий раз я предложу отличное руководство …

До свидания…

До скорого……………

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