Программа синтеза речи
Способы реализации синтеза речи. Существующие text-to-speech системы. Обзор технологий для реализации интерфейса API, клиентской и серверной части веб-приложения. Преобразование чисел в слова. Результат обработки входящего текста. Склейка фонем в слово.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 04.12.2019 |
Размер файла | 5,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Рисунок 4 SAP Neo Web IDE
Рисунок 5 Деплой frontend приложения на SCP
3.3 Описание сервиса, предоставляющего интерфейс API
Сервис, реализующий открытый API - бэкенд - представлен в виде Java Spring приложения и отвечает за маршрутизацию запросов межу пользовательским интерфейсом и сервисом, ответственным за синтез речи.
3.3.1 Структура проекта
Структура проекта, предоставляющего интерфейс API представлена ниже (рис. 6).
Рисунок 6 Структура проекта бэкенда
Данный проект использует инструмент для сборки Java-проекта - maven, поэтому все внешние зависимости проекта указаны в файле pom.xml в основной директории.
3.3.2 Диаграмма классов проекта
Диаграмма классов проекта бэкенда представлена ниже (рис. 7).
Рисунок 7 Диаграмма классов бэкенда
Все реализованные классы указаны на диаграмме классов. Класс ThesisTtsApplication инициализирует приложение, стартует все компоненты и бины. Класс ControllerAPI реализует интерфейс API. Он является обработчиком запросов, которые поступают к данному сервису. После обработки запроса, он использует методы интерфейса CallProcessService для того, чтобы обратиться к другому сервису - синтезатору речи. После получения ответа от синтезатора речи, данный сервис обрабатывает ответ и возвращает его в точку вызова.
3.3.3 Описание интерфейса API
Доступ к серверу осуществляется посредством вызова API, состоящего из GET и POST-запросов. Ниже приведена таблица доступных методов (табл. 6)
Таблица 6 API сервиса (бэкенда)
Путь (route) |
Метод (HTTP method) |
Заголовки (headers) |
Тело запроса (body) |
Значение |
|
/check |
GET |
- |
- |
Проверка доступности сервера для синтеза речи. Ответ возвращается в виде JSON-объекта. В случае ошибки возвращается http-код ошибки. |
|
/get_audio |
POST |
Content-Type:application/ json |
Текст, предназначаемый для озвучки |
Отправка текста, по которому необходимо получить синтезированную речь. Ответ возвращается в виде массива байт с указанием соответствующего http-заголовка [7]. В случае ошибки возвращается пустой массив. |
3.3.4 Формат данных
1. Запрос по пути /check:
Тело запроса отсутствует.
Тело ответа возвращается в формате JSON.
Пример ответа, когда сервис по синтезу речи доступен:
{
“status”: “OK”
}
Http-код: 200.
Пример ответа, когда сервис по синтезу речи не доступен:
{
“status”: “ERROR”,
“description”: “something goes wrong, try later”
}
Http-код: 503.
Возможные http-коды ответов: 404, 405, 503 (табл. 7).
2. Запрос по пути /get_audio:
Тело запроса всегда отправляется в формате JSON.
Тело ответа содержит массив байт, если запрос прошел успешно и голос синтезирован. Тело ответа содержит ответ в формате JSON в случае возникновения какой-либо ошибки.
Пример запроса:
{
“input”: “привет”
}
Пример успешного ответа (рис. 8):
'
Рисунок 8 Пример успешного ответа на запрос синтезированной речи
Пример ответа, когда сервис по синтезу речи не доступен:
{
“status”: “ERROR”,
“description”: “something goes wrong, try later”
}
Http-код: 503.
Возможные http-коды ответов: 404, 405, 422, 503 (табл. 7).
Таблица 7 Описание используемых http-кодов
Http-код |
Название |
Обозначение |
|
200 |
OK |
Запрос был успешно обработан. |
|
404 |
Not Found |
Сервер на нашел запрашиваемый ресурс. |
|
405 |
Method Not Allowed |
Метод не разрешен для конкретного ресурса. |
|
422 |
Unprocessable Entity |
Неверное тело запроса (ошибки в ключах и значениях). |
|
503 |
Service Unavailable |
Сервис недоступен. |
3.3.5 Разворачивание сервиса
Данное Java-приложение развернуто на платформе SAP Cloud Platform: Neo Environment. Как уже было описано в разделе 2.2, платформа предоставляет возможность для разворачивания Java-приложений не задумываясь о серверной части. Процесс деплоя (deploy) приложения на платформу составляет лишь загрузка war-файла, полученного в результате сборки Java-приложения. В результате приложением можно управлять с помощью специальной панели управления, где отображается состояние приложения, его загрузка CPU, а также ведется логирование (рис. 9).
Рисунок 9 Консоль управления приложением в SCP Neo Environment
3.4 Описание сервиса, представляющего синтезатор речи
3.4.1 Структура проекта
Структура проекта, представляющего синтезатор речи, представлена ниже (рис. 10).
Рисунок 10 Структура проекта синтезатора речи
3.4.2 UML-диаграмма связей проекта
UML-диаграмма связей проекта синтезатора речи представлена ниже (рис. 11).
Рисунок 11 UML-диаграмма связей синтезатора речи
На UML-диаграмме приведены основные python-файлы и основные крупные методы, необходимые для синтеза речи.
Python-файл server.py, реализующий интерфейс API, расположен в корневой директории проекта. Он является обработчиком запросов, которые поступают к данному сервису. После обработки запроса, работа переходит в файл controller.py, где уже последовательно выполняются необходимые для синтеза речи шаги. Методы, которые вызываются в controller.py подтягиваются из python-файлов text_processing.py, audio_processing и utils.py.
Такие файлы, как manifest.yml, Procfile, requirements.txt и runtime.txt необходимы для разворачивания приложения на платформе Cloud Foundry (см. пункт 3.4.6).
В директории static лежат файлы записанных звуков, которые используются для синтеза речи, а также полная акцентуированная парадигма по А. А. Зализняку, представленная в виде txt-файла и содержащая словарь слов с проставленными ударениями.
3.4.3 Принцип работы сервиса
При запуске сервера, программа инициализирует словарь ударений, считывая данные из файла stress_forms.txt (методы start_runner() и activate_job() в файле server.py). Она представляет весь файл в виде словаря (dict), хранящегося в виде глобальной переменной одного из классов программы. Таким образом при каждом обращении к сервису синтеза речи, программа не будет тратить время на чтение файла, а сразу будет обращаться к словарю за время O(1).
После получения запроса о необходимости создания синтезированной речи, программа начинает работу, выполняя описанные методы в пункте 2.3 данной работы. Результатом обработки входящего текста является список, каждым элементом которого является либо список слогов для каждого слова, по которому будет производиться поиск соответствующих фонем, либо выделенные знаки интонации. Для каждого такого элемента найденные фонемы склеиваются, применяя описанные в пункте 2.4 методы. Так, для фразы “Привет, как дела?” будет озвучено слово “привет”, далее последует небольшая пауза в синтезированной речи, обозначающая запятую, а затем будут синтезированы оставшиеся в слова. На получившуюся последовательность накладывается эффект “вопросительной интонации”.
После окончания синтеза слов в единый аудиофрагмент, он сохраняется на физической памяти сервера и отправляется по запросу в виде массива байт, сохраняя в заголовках информацию о типе файла - в данной реализации аудиофайлы передаются в формате wav. Ниже приведена блок-схема выполнения процесса синтеза речи (рис. 12).
Рисунок 12 Блок-схема процесса синтеза речи
3.4.4 Описание интерфейса API
Доступ к серверу осуществляется посредством вызова API, состоящего из GET и POST-запросов. Ниже приведена таблица доступных методов (табл. 8).
Таблица 8 API сервиса (синтезатора речи)
Путь (route) |
Метод (HTTP method) |
Заголовки (headers) |
Тело запроса (body) |
Значение |
|
/check |
GET |
- |
- |
Возвращает статус работоспособности сервиса. Ответ возвращается в виде JSON-объекта. В случае ошибки возвращается http-код ошибки. |
|
/get_audio |
POST |
Content-Type:application/json |
Текст, предназначаемый для озвучки |
Отправка текста, по которому необходимо получить синтезированную речь. Ответ возвращается в виде массива байт с указанием соответствующего http-заголовка. В случае ошибки возвращается пустой массив. |
3.4.5 Формат данных
1. Запрос по пути /check:
Тело запроса отсутствует.
Тело ответа возвращается в формате JSON.
Пример ответа, когда сервис по синтезу речи доступен:
{
“status”: “OK”
}
Http-код: 200.
Пример ответа, когда сервис по синтезу речи не доступен:
{
“status”: “ERROR”,
“description”: “something goes wrong, try later”
}
Http-код: 503.
Возможные http-коды ответов: 404, 405, 503 (табл. 7).
2. Запрос по пути /get_audio:
Тело запроса всегда отправляется в формате JSON.
Тело ответа содержит массив байт, если запрос прошел успешно и голос синтезирован. Тело ответа содержит ответ в формате JSON в случае возникновения какой-либо ошибки.
Пример запроса:
{
“input”: “привет”
}
Пример успешного ответа (рис. 13):
'
Рисунок 13 Пример успешного ответа на запрос синтезированной речи
Пример ответа, когда сервис по синтезу речи не доступен:
{
“status”: “ERROR”,
“description”: “something goes wrong, try later”
}
Http-код: 503.
Возможные http-коды ответов: 404, 405, 422, 503 (табл. 7).
3.4.6 Разворачивание сервиса
Данное Python-приложение развернуто на платформе SAP Cloud Platform: Cloud Foundry. Как уже было описано в разделе 2.2, платформа предоставляет возможность для разворачивания приложений практически на любом языке программирования, не задумываясь о серверной части. Процесс деплоя (deploy) Python-приложения на платформу составляет следующие шаги:
1. Необходимо в директории проекта создать 4 настроечных файла, а именно:
· manifest.yml, где указывается имя проекта и ресурсы (физическая память), которые должны быть выделены под приложение
· Procfile, где указывается путь к Python-файлу, содержащему код для запуска приложения и реализующему роутинг (API).
· requirements.txt, где указываются все сторонние библиотеки, использованные в проекте
· runtime.txt, где указывается версия Python, на которой должно работать приложение.
2. Загружать приложение на платформу необходимо через интерфейс командной строки (CLI), выполнив 3 команды (необходим предустановленный клиент командной строки для Cloud Foundry - cf):
· cf api https://api.cf.eu10.hana.ondemand.com
· cf login
· cf push <application name>
Пример файла manifest.yml (рис. 14)
Рисунок 14 Содержание файла manifest.yml
Сначала происходит подключение к удаленному хосту, затем аутентификация аккаунта и деплой самого приложения.
В результате приложением можно управлять с помощью специальной панели управления, где отображается состояние приложения, его настройки, загрузка CPU, а также ведется логирование (рис. 15).
Рисунок 15 Консоль управления приложением в SCP Cloud Foundry
Выводы по главе
В заключительной главе данной работы были описаны функциональные требования разработанного проекта, структура и принцип работы каждого из модулей, составляющих микросервисную архитектуру, а также платформы, на которых была развернута система.
Заключение
В настоящее время синтез речи является одной из самых интересных и важных тем, направленной на получение информации от технических устройств по альтернативным каналам восприятия. Так, системы синтеза речи могут быть использованы в информационных терминалах, предназначенных для людей с ограниченными возможностями. А разработанная программа может стать ключом к решению этой проблемы.
В рамках данной работы была разработана программа, включающая в себя как веб-приложение, демонстрирующее функционал полученного решения, так и открытый интерфейс API, который позволит интегрировать разработанное приложение практически в любую систему. Также были выполнены следующие задачи:
1. Проанализированы существующие решения и аналоги разрабатываемой программы для синтеза речи;
2. Выбран наиболее подходящий способ синтеза речи, который включает в себя компиляцию базы звуков, содержащей все возможные звучания слогов и отдельных букв в словах на русском языке;
3. Разработана архитектура приложения;
4. Разработан модуль, отвечающий за синтез речи по входящему тексту;
5. Разработан модуль, предоставляющий открытый интерфейс API;
6. Разработан пользовательский интерфейс для веб-приложения.
Реализованное приложение, удовлетворяет всем требованиям технического задания (Приложение А).
Данный проект может быть усовершенствован в дальнейшем. Для этого необходимо выполнить следующие задачи:
1. Добавить поддержку синтеза на других языках;
2. Усовершенствовать эмоциональную окраску синтезированной речи для ее приближения к человеческой;
3. Добавить настройку синтезируемой речи: возможность выбора синтезированного голоса, возможность задавать такие параметры, как скорость проговаривания слов и тембр голоса.
Список источников
1. Вокодер. Общие сведения Электронный ресурс. - Режим доступа: https://eomi.ru/electronic/vocoder/, свободный. (дата обращения: 23.04.2019)
2 Законы произношения гласных и согласных звуков в русском языке Электронный ресурс. - Режим доступа: https://myfilology.ru/145/orfoepiya-v-zhurnalistike/zakony-proiznosheniya-glasnyx-i-soglasnyx-zvukov-v-russkom-yazyke/, свободный (дата обращения 24.04.2019).
3 Интерполирующие цифровые фильтры Электронный ресурс. - Режим доступа: http://digteh.ru/digital/Intrpltr.php, свободный (дата обращения 18.05.2019).
4 Логическое ударение Электронный ресурс. - Режим доступа: https://licey.net/free/4-russkii_yazyk/39kurs_russkogo_yazyka_fonetika__slovoobrazovanie__morfologiya_i_orfografiya/stages/633-17_udarenie.html, свободный (дата обращения 17.05.2019).
5 Передискретизация (oversampling) Электронный ресурс. - Режим доступа: http://audioakustika.ru/node/1180, свободный (дата обращения 18.05.2019).
6 Полная акцентуированная парадигма по А. А. Зализняку Электронный ресурс. - Режим доступа: http://www.speakrus.ru/dict/#paradigma, свободный (дата обращения 17.03.2019).
7 Полный список типов MIME Электронный ресурс. - Режим доступа: https://developer.mozilla.org/ru/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Полный_список_типов_MIME, свободный (дата обращения 10.05.2019).
8 Рыбин, С. Синтез речи / Университет ИТМО, 2014. - 85 с.
9 Склонение числительных Электронный ресурс. - Режим доступа: https://numeralonline.ru, свободный (дата обращения 20.03.2019).
10 Фонетико-акустическая база данных для многоязычного синтеза речи по тексту на славянских языках Электронный ресурс. - Режим доступа:
http://www.dialog-21.ru/digests/dialog2006/materials/html/lobanov.htm, свободный. (дата обращения: 23.04.2019)
11 Acapela-group Электронный ресурс. - Режим доступа: https://www.acapela-group.com/, свободный. (дата обращения: 22.04.2019)
12 Apache Maven Documentation Электронный ресурс. - Режим доступа: https://maven.apache.org/guides/, свободный (дата обращения 14.05.2019).
13 Blob Documentation Электронный ресурс. - Режим доступа: https://developer.mozilla.org/ru/docs/Web/API/Blob, свободный (дата обращения 10.05.2019).
14 Festival Электронный ресурс. - Режим доступа: http://festvox.org/festival/, свободный. (дата обращения: 22.04.2019)
15 Flask Documentation Электронный ресурс. - Режим доступа: http://flask.pocoo.org/docs/1.0/, свободный (дата обращения 09.05.2019).
16 Git Documentation Электронный ресурс. - Режим доступа: https://git-scm.com/doc, свободный (дата обращения 18.02.2019).
17 HTTP Status Codes Электронный ресурс. - Режим доступа: https://www.restapitutorial.com/httpstatuscodes.html, свободный (дата обращения 29.04.2019).
18 IVONA Электронный ресурс. - Режим доступа: https://www.ivona.com/, свободный. (дата обращения: 22.04.2019)
19 Java Spring Boot Documentation Электронный ресурс. - Режим доступа: https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/, свободный (дата обращения 14.05.2019).
20 LibROSA Documentation Электронный ресурс. - Режим доступа: https://librosa.github.io/librosa/, свободный (дата обращения 10.04.2019).
21 Lombok Project Features Электронный ресурс. - Режим доступа: https://projectlombok.org/features/all, свободный (дата обращения 16.05.2019).
22 Npm Documantation Электронный ресурс. - Режим доступа: https://docs.npmjs.com, свободный (дата обращения 18.05.2019).
23 Pydub Documentation Электронный ресурс. - Режим доступа: http://pydub.com, свободный (дата обращения 12.04.2019).
24 Pymorphy2 Documentatuon Электронный ресурс. - Режим доступа: https://pymorphy2.readthedocs.io/en/latest/user/index.html, свободный (дата обращения 20.04.2019).
25 React.js Documentation Электронный ресурс. - Режим доступа: https://reactjs.org/docs/hello-world.html, свободный (дата обращения 20.05.2019).
26 Representational state transfer, REST Электронный ресурс. - Режим доступа: https://www.codecademy.com/articles/what-is-rest, свободный. (дата обращения 24.04.2019)
27 SAP Cloud Platform Help Portal Электронный ресурс. - Режим доступа: https://help.sap.com/viewer/product/CP/Cloud/en-US, свободный (дата обращения 02.05.2019).
28 Soap specifications, SOAP Электронный ресурс. - Режим доступа: https://www.w3.org/TR/soap/, свободный (дата обращения 24.04.2019).
29 TypeScript Documentation Электронный ресурс. - Режим доступа: https://www.typescriptlang.org/docs/home.html, свободный (дата обращения 18.05.2019).
30 X. Huang, A. Acero, H.-W. Hon. Principals of Speech Synthesis in Spoken Language Processing: a guide to theory, algorithm, and system development / Prentice-Hall PTR, 2001.
Размещено на Allbest.ru
Подобные документы
Общая характеристика и функциональное назначение проектируемого программного обеспечения, требования к нему. Разработка и описание интерфейса клиентской и серверной части. Описание алгоритма и программной реализации приложения. Схема базы данных.
курсовая работа [35,4 K], добавлен 12.05.2013Характеристика программной системы автоматизации МЧС по контролю рыбаков дрейфующих на льдинах. Выбор инструментальных средств разработки системы, технологии ее реализации. Проектирование архитектуры системы. Анализ серверной и клиентской части системы.
курсовая работа [1014,5 K], добавлен 28.08.2012Появление поисковых систем. Применение семантических сетей для анализа текста. Определение релевантности, ранжирование и индексация. Особенности программы Balabolka. Системы анализа речи. Современные особенности поиска. Развитие сервисов поисковых систем.
реферат [3,2 M], добавлен 22.04.2015Особенности работы с SQL-базами данных. Установка и настройка локального сервера СУБД Interbase. Создание приложения "Торговая фирма", состоящее из серверной части и клиентской. Разработка спецификаций и описание интерфейса пользователя программы.
курсовая работа [634,5 K], добавлен 14.07.2012Разработка сетевой карточной игры "King" для операционной системы Windows XP. Реализация приложения с помощью интерфейса прикладного программирования Win32 API. Назначение серверной и клиентской части. Анализ исходных данных, тестирование приложения.
курсовая работа [209,3 K], добавлен 24.01.2016Реализация базы данных и серверной части информационной системы склада средствами СУБД Microsoft SQL Server. Анализ предметной области, информационных задач, пользовательской системы. Программа реализации проекта. Выработка требований и ограничений.
курсовая работа [2,4 M], добавлен 15.11.2015Строение артикуляционного аппарата человека с точки зрения возможности распознавания речи по артикуляции. Комплекс параметров артикуляции на основе контура внутренней области губ. Реализация модуля распознавания фонем русской речи по изображениям губ.
дипломная работа [3,1 M], добавлен 19.08.2012Сущность и возможности языка программирования Visual Basic. Элементы управления и функции Windows API, используемые в проекте. Структуры и составные части приложения "Video2Bmp". Организация режимов работы программы: "Склейка кадров", "Создание видео".
курсовая работа [1,0 M], добавлен 29.08.2013Принцип работы нейросетей и модели синтеза. Ключевые моменты проблемы распознавания речи. Система распознавания речи как самообучающаяся система. Описание системы: ввод звука, наложение первичных признаков на вход нейросети, модель и обучение нейросети.
курсовая работа [215,2 K], добавлен 19.10.2010Моделирование бизнес-процессов AS-IS и TO-BE. Построение логической и физической модели данных. Взаимодействие объектов и экранные формы к прецедентам. Диаграммы классов пользовательского интерфейса и компонентов клиентской и серверной части приложения.
курсовая работа [1,5 M], добавлен 19.12.2015