- •I.Введение
- •II.Теоретическая часть
- •1. Интерфейс ос
- •2. Базовые функции
- •3. Управление данными
- •4. Процесс выполнения
- •III.Практическая часть
- •0. Общее описание
- •2. Поиск периода
- •3. Оптимизация алгоритма
- •4. Желаемая частота основного тона
- •1. Определение периода частоты основного тона
- •5. Изменение периода частоты основного тона с помощью Hanning windows.
- •6. Сглаживание с помощью Overlap and Add
- •VI. Заключение
- •VII. Библиография
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 – Функции отладки
