Автономная система преобразования текста в речь на ESP32


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

Автономная система преобразования текста в речь на ESP32

Ранее на нашем сайте мы рассматривали следующие проекты преобразования текста в речь:

Все эти проекты были интересными, но они также выявили большую проблему: большинство решений для преобразования текста в речь полагаются на облачные сервисы. Это означает, что могут возникать задержки в интернете, проблемы с надежностью и сложности с настройкой, что крайне неприятно, когда вам нужно, чтобы ваша система работала где угодно и когда угодно. Именно поэтому мы решили создать решение, которое не требует облака. В этом руководстве мы покажем вам, как создать систему преобразования текста в речь на ESP32 в автономном режиме. С помощью библиотеки Talkie и ее аудиоформата Linear Predictive Coding (LPC) плата ESP32 может напрямую преобразовывать текст в речь, используя свой ЦАП (цифро-аналоговый преобразователь). Добавление усилителя PAM8403 и небольшого динамика дает вам полноценную, автономную систему преобразования текста в речь. 

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

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

  1. Модуль ESP32 (купить на AliExpress).
  2. Усилитель PAM8403. Усиливает выходной аудиосигнал ЦАП. Работает от 5 В, 3 Вт на канал.
  3. Громкоговоритель (динамик). Воспроизводит слышимую речь. Импеданс 4-8 Ом.
  4. Макетная плата.
  5. Соединительные провода.
  6. USB-кабель.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

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

Внешний вид компонентов, необходимых для создания проекта

Как работает система преобразования текста в речь на ESP32 в автономном режиме

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

Мы использовали библиотеку Talkie, простой инструмент преобразования текста в речь, предназначенный для устройств с небольшим объемом памяти. Talkie сохраняет голосовые записи в формате LPC. Это тип сжатого аудио, который может хранить сотни английских слов. Этот формат использовался в более старых устройствах для преобразования речи, поскольку он занимает очень мало памяти. Это свойство позволяет ему хорошо работать и с ESP32, позволяя ему воспроизводить речь непосредственно с вывода ЦАП без какого-либо дополнительного оборудования. Эта архитектура преобразования текста в речь на ESP32 в автономном режиме обеспечивает быстрое время отклика и надежную работу в средах без доступа к сети, что делает ее идеальной для промышленной автоматизации, образовательных устройств и автономных встраиваемых систем.

Принцип ее работы показан на следующем рисунке.

Принцип работы автономной системы преобразования текста в речь на ESP32

Сгенерированный аудиосигнал передается через один из выводов ЦАП. Поскольку это маломощный аналоговый сигнал, он поступает на усилитель PAM8403, который усиливает сигнал настолько, чтобы он мог работать с обычным динамиком. Это создает небольшую систему преобразования текста в речь, которая не требует подключения к интернету или большой вычислительной мощности. Такие системы преобразования текста в речь отлично подходят для голосовых оповещений, сообщений о состоянии и инструктивной обратной связи. Поскольку все работает локально, система преобразования текста в речь на ESP32 быстро реагирует и надежно работает даже в местах, где нет интернета или ограничен доступ к сети.

Схема обработки аудиосигнала

Ниже описан процесс обработки аудиосигналов при преобразовании текста в речь на ESP32:

∗ Ввод текста: пользователь вводит предложение через последовательный монитор.
∗ Разбор слов: ESP32 разбивает предложение на отдельные слова.
∗ Сопоставление словарного запаса: каждое слово сопоставляется с массивами данных LPC.
∗ Вывод ЦАП: каждый сопоставленный кадр LPC генерирует аналоговый звук на GPIO25.
∗ Усиление: модуль PAM8403 усиливает сигнал для вывода на динамик.
∗ Воспроизведение звука: динамик воспроизводит разборчивую речь.

Основные характеристики офлайн-конвертера текста в речь на ESP32

⇒ Полностью автономный вывод речи.
Вся обработка происходит непосредственно на ESP32, поэтому вам не требуется подключение к интернету или какие-либо внешние сервисы. Система быстро реагирует и остается надежной даже при отсутствии сети.

⇒Очень простые требования к оборудованию.
Для сборки требуется только ESP32, небольшой усилитель PAM8403 и стандартный динамик. Здесь нет сложных аудиопроцессоров или замысловатых схем, что делает конструкцию простой в сборке и экономичной.

⇒Легковесный речевой движок LPC.
Библиотека Talkie использует кодирование LPC, что позволяет сохранять речевые данные небольшими и простыми в обработке. Качество звука не отличается высокой точностью, но оно достаточно четкое для оповещений, инструкций или коротких сообщений.

⇒Легко добавить больше слов.
Если вы хотите, чтобы система произносила больше слов, просто добавьте новые записи LPC в файл словаря. Пока данные LPC присутствуют, ESP32 может произносить слова без необходимости внесения каких-либо изменений в код.

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

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

Особенности офлайн-конвертера текста в речь на ESP32

Схема подключения ESP32 к PAM8403

Для преобразования текста в речь на ESP32 нам потребуется аудиоусилитель PAM8403 и динамик, как упоминалось ранее. На приведенной ниже схеме показано, как подключить модуль аудиоусилителя PAM8403 к ESP32.  

Схема подключения ESP32 к PAM8403

ESP32 имеет два вывода ЦАП (GPIO25 и GPIO26). В этом проекте мы используем GPIO25 для вывода аудиосигнала.

В таблице ниже указаны контакты подключения ESP32 и модуля усилителя PAM8403. Для корректной реализации преобразования текста в речь с использованием ESP32 следуйте этой таблице подключения.

Контакт ESP32 Контакт PAM8403 Описание
GPIO25 R (Правый аудиовход) Аудиосигнал (выход ЦАП)
5V VCC Обеспечивает питание модуля усилителя
GND GND Общий провод (земля)

На выводе GPIO25 отображается аналоговый сигнал, генерируемый речевым процессором LPC. Затем микросхема PAM8403 усиливает этот сигнал до уровня обычной речи

Соединения PAM8403 и динамика

В таблице ниже показано расположение контактов PAM8403 относительно динамика.

Контакт PAM8403 Динамик
Р+ Speaker +
Р− Speaker −

Схема проекта на макетной плате показана на следующем рисунке.

Схема проекта на макетной плате

Объяснение кода программы

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

В программной части мы будем использовать среду разработки Arduino IDE вместе с библиотекой Talkie для чтения текста из последовательного монитора и преобразования его в аудиовыход.

Talkie — это основная библиотека, которая обрабатывает LPC-аудио. Она включает в себя функции для чтения LPC-кадров, их декодирования и генерации итоговой звуковой волны через вывод ЦАП GPIO.

Вы можете скачать библиотеку Talkie здесь, на GitHub: https://github.com/ArminJo/Talkie

"Vocab_US_Large.h" — это файл словаря, содержащий предопределенные массивы речевых сигналов LPC.

Инициализация объекта Talkie

Объект voice выступает в роли механизма воспроизведения. Каждый раз, когда вы вызываете функцию voice.say(...), ESP32 выдает последовательность кадров LPC в качестве выходных данных, представляющих произнесенные слова.

Структура сопоставления слов

Структура WordMap создает простой словарь, связывающий ключевое слово в тексте (введенное вами слово) с определенным массивом LPC, содержащим аудиоданные этого слова.

Например:

Это означает, что при вводе "ONE" система извлекает данные LPC, хранящиеся в sp2_ONE.

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

Словарный массив

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

Массив может быть довольно большим, и добавление большего количества слов делает вашу библиотеку преобразования текста в речь для ESP32 лучше и полезнее для реальных проектов. Когда вы набираете «ONE», система преобразования текста в речь ESP32 извлекает данные из sp2_ONE. Библиотека преобразования текста в речь ESP32 не генерирует фонемы динамически — она воспроизводит только предопределенные массивы LPC.

Функция поиска слов и воспроизведения

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

Эта функция сравнивает введенное вами слово с каждой записью в словаре, игнорируя заглавные и строчные буквы. Если найдено совпадение, она использует функцию voice.say() для воспроизведения аудиофайла LPC.

Если совпадений нет, отображается предупреждающее сообщение. Это поможет вам определить пропущенные слова в словаре.

Обработка последовательного ввода

В функции setup():

ESP32 ожидает ввода данных от пользователя через последовательный монитор.

Логика разбора предложений

В функции loop():

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

Предложение обрабатывается по одному символу за раз:

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

Тестирование работы проекта

После загрузки кода откройте последовательный монитор и установите скорость передачи данных на 9600 бод. Введите, например, следующее:

Затем нажмите Enter.

ESP32 считывает всё предложение, разбивает его на отдельные слова и пытается произнести каждое из них, используя систему сопоставления словарного запаса. Если слово есть в словаре, вы услышите его чётко через динамик в рамках процесса преобразования текста в речь ESP32. Если слово не найдено, в мониторе последовательного порта отображается сообщение “Word not found in vocab” («Слово не найдено в словаре»), что помогает вам найти пропущенные слова в вашем словаре и при необходимости обновить библиотеку преобразования текста в речь для ESP32.

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

Пример ситуации когда слово было не найдено в словаре

Устранение неполадок

В следующей таблице показаны возможные неполадки в работе проекта и способы их устранения.

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

Часто задаваемые вопросы по преобразованию текста в речь на

ESP32

⇥ 1. Может ли эта система озвучивать любое слово, которое я захочу?
Нет, система может озвучивать только те слова, которые уже содержат данные LPC в файле словаря. Библиотека Talkie не создает речь на лету; она просто воспроизводит предварительно записанные речевые кадры из памяти. Вы можете добавить больше слов только в том случае, если доступны массивы LPC, что является обычным для системы преобразования текста в речь на ESP32. Если слова нет в файле, ESP32 не сможет самостоятельно сформировать речь.

⇥ 2. Почему голос звучит как робот?
Библиотека Talkie использует линейное предиктивное кодирование (LPC), метод сжатия речи, который впервые был применен в более старых цифровых системах связи. LPC подходит для небольших устройств, но часто создает звук, который кажется искусственным или роботизированным. Это распространенная проблема в библиотеке синтеза речи ESP32; экономия памяти важнее, чем достижение очень естественного звучания.

⇥ 3. Можно ли подключиться напрямую к динамику без усилителя?
Технически, вывод ЦАП ESP32 может воспроизводить звук, но громкость будет низкой, а прямое подключение может перегрузить или повредить вывод ЦАП. Поэтому для безопасного и надежного получения выходного сигнала в любых проектах преобразования текста в речь на ESP32 необходимо использовать модуль PAM8403.

⇥ 4. Какие контакты ЦАП можно использовать?
ESP32 имеет два контакта, которые можно использовать для ЦАП: GPIO25 и GPIO26 . Оба этих контакта могут выдавать аналоговые аудиосигналы. В этом руководстве мы используем GPIO25 для единообразия, но если для вашей конфигурации требуется другая конфигурация контактов, вы можете использовать GPIO26 .

⇥ 5. Работает ли это с ESP8266?
ESP8266 совместим с библиотекой Talkie. Изначально библиотека была разработана для работы с платами ESP32, но платы ESP8266 также могут эффективно её поддерживать. 

⇥ 6. Можно ли использовать более крупные колонки?
Да. Усилитель PAM8403 может питать многие небольшие и средние колонки, сопротивление которых обычно составляет от 4 до 8 Ом. Если вы используете более крупные колонки, им может потребоваться большая мощность, поэтому убедитесь, что ваша проводка и источник питания подходят для их установки.

Заключение

В этом подробном руководстве показано, как система преобразования текста в речь ESP32, в сочетании с библиотекой Talkie и форматом аудиофайлов LPC, обеспечивает простые, но эффективные возможности вывода голоса. Система преобразования текста в речь ESP32 не зависит от облачных сервисов, что позволяет осуществлять полное или частичное воспроизведение речи в условиях ограниченной памяти или плохого интернет-соединения. Хотя использование библиотеки ESP32 TTS может звучать несколько роботизированно, автономная работа и низкое потребление памяти обеспечивают возможность использования везде, где требуется аудиообратная связь в реальном времени. Независимо от того, является ли вашей целью система оповещения, обучающий инструмент или панель автоматизации, преобразование текста в речь с помощью ESP32 обеспечивает максимальную ценность для пользователя в проектах со встроенными системами.

Этот проект демонстрирует, что ESP32 может генерировать звук из предварительно записанных данных LPC и простой программной библиотеки. Использование библиотеки Talkie превращает устройство в практичное решение для преобразования текста в речь для небольших проектов и систем, обеспечивая голосовой вывод без необходимости использования облачного синтезатора речи. Вся система остается компактной, доступной и полностью автономной. Поскольку она использует минимальное количество оборудования и не требует подключения к интернету, она хорошо работает даже в удаленных или промышленных условиях. 

Полный код программы

Его также вместе со схемой можно скачать по следующей ссылке.

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
54 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *