Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kurs_12-12-19.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
175 Кб
Скачать
☆

3. Управление данными

Слой управления данными позволяет остальным слоям получать доступ к данным выбранного языка и соответствующего диктора (вместе они создают lingware – лингвистику).

Основные структуры, с которыми работает Knowledge Layer:

  • KnowledgeBase определяет различные характеристики диктора или языка (лексика, фонетика, алгоритм решения для выделения акцента)

  • Voice фактически является коллекцией из KnowledgeBase, используемой для преобразования текста в речь определенного языка определенным голосом.

  • Resource являются некими подмножествами Voice. Каждый Resource представляется отдельным файлом. Например Voice обычно состоит из двух Resource: с языковой лингвистикой (не зависящей от диктора) и с данными диктора, соответственно. Это дает большую функциональность для пользователя и упрощает создание баз данных для различных голосов и различных языков

  • VoiceDefinition сопоставляет «высокоуровневому» названию голоса соответсвующие Resource. VoiceDefinition может динамически меняться, то есть после запуска программы можно совершать «горячее» переключение языка и/или дикторова

  • ResourceManager содержит информацию о загруженных данных и подключенных VoiceDefinition

4. Процесс выполнения

Слой процесса выполнения состоит из трех подуровней: Control, Processor Units (PU) и Data Structures and Basic Operations.

ProcessorUnits – это набор элементарных обработчиков, которые вместе реализуют весь процесс TTS-обработки.

Data Structures и Basic Operations определяют структуры данных, используемых подуровнем PU, а так же функции для работы с ними. Это обычные буферы, временные переменные, появляющиеся во время отдельных шагов, и т.п.

Control состоит из единственного модуля PicoCtrl (Control Unit, CU). Он занимается связыванием отдельных шагов выполнения обработки для достижения максимальной эффективности. Область его работы начинается с получения некоторых входных данных и запуска системы до выдачи результата приложению, сделавшему запрос на TTS-обработку.

Процесс обработки состоит из цепочки преобразований, где для каждой отдельной операции (такой как токенизация, акцентирование, генерация сигнала и т.д.) предназначен отдельный PU-модуль. Так каждый PU получает данные от предыдущего и, после обработки, передает следующему «по конвейеру» (в момент «передачи» активным является модуль Control, а данные хранятся в специально выделенном буфере). Ясно, что первый PU получает на вход массив символов, полученный из переданного приложению текста (в кодировке UTF-8), а последний – возвращает звуковой сигнал (16-битное PCM-кодирование, 16kHz).

Control Unit управляет параллельностью работы PU и занимается балансировкой предоставляемых ресурсов платформы каждому PU в частности и всему приложению вместе. Он и предоставляет API-функции, через которые можно обращаться к приложению. CU занимается созданием и уничтожением всех PU, а так же связывает их между собой. Так, для упрощения контроля внутренней работы PU, вызов каждой функции возвращает в CU одно из возможный значений результата работы:

  • ERROR: в процессе обработки или управления возникла ошибка

  • IDLE: текущий PU завершил работу над всеми полученными item и sheduler может передать управление следующему PU

  • BUSY: в данный момент выполняется обработка внутренних данных, но возможна передача управления другому PU. Sheduler может перейти к другому PU, и тогда вернется к этому позже.

  • ATOMIC: так же, как и BUSY, но происходит «атомарный шаг» и этот PU не хочет отдавать контроль другим

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

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

Модули Pico:

Application Layer: testpico – Каждое приложение может получить доступ к движку с помощью API.

API Layer: picoapi – Программный интерфейс приложения.

Run-Time Processing Layer:

picoctrl - Runtime Processing Units Scheduler: отвечает за распределение по времени подходящей обработки takes care of scheduling the suitable processing at each time slice available and to return suitable values to the caller.

picotok – Разбивает входящий текст в токены.

picopr – Текстовый предобработчик, частичная интерпретация некоторых токенов.

picowa – Анализ слов, проверка на часть речи Word analysis, dictionary check for PartOfSpeech assign OR automatic POS prediction

picosa – Анализ предложения: POS Sentence analysis: POS disambiguation, G2P prediction or Lexicon Lookup for G2P, preliminary Syllabification

picoacph – Расстановка акцентов и разделение на фразы: к информации о словах добавляется предположение об их значимости (???), могут быть добавлены границы между словами.

picospho – Фонетика в предложении: фонетические ограничения и финальная расстановка ударений или границ.

picopam – Сопоставление фонетики акустике: . Фонемы сопоставляются подфонемам, каждой подфонеме индексы периода частоты основного тона, и т.д. Данные на выход в основном звуки (phones?).

picocep – Спектральное сглаживание: фонетические данные параметризуются на основании данных о длительности в отдельные “окна”. Период частоты основного тона вместе со спектральными параметрами получаются отдельно для каждого на выходе в основном являются параметрическими окнами.

picosig – Генератор сигнала: каждое размытое параметрическое окно преобразовывается в соответствующий сигнальный буфер.

Knowledge Layer: picosrc – Управление основными ресурсами.

picoknow – Управления основными данными.

picokdt – Дерево принятия решений

picokfst – Управление преобразованиями к конечному числу состояний

picoklex – Управление лексиконом

picokpdf – Функция плотности вероятности

picokdbg.c – Управление отладкой.

Basic Functions Layer: picobase – обычные функции, как например преобразование строк.

picodata – управление данными для буферов и др.

picotrns - Finite State Transducers management

Operating System Layer: picoos.c - High Level OS-near functionalities

picopal.c - OS implementation functions (platform specific) picodbg.c

picodbg.c – Функции отладки

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]