ФГБОУ ВПО «ИЖЕВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ М.Т. КАЛАШНИКОВА»

advertisement
ФГБОУ ВПО «ИЖЕВСКИЙ ГОСУДАРСТВЕННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ М.Т. КАЛАШНИКОВА»
Факультет «Информатика и вычислительная техника»
Кафедра «Программное обеспечение»
На правах рукописи
ЕШКЕЕВ Никита Станиславович
АВТОМАТИЗАЦИЯ СЕГМЕНТАЦИИ ЦИФРОВОГО РЕЧЕВОГО
СИГНАЛА ПО ТИПУ ВОЗБУЖДЕНИЯ
Направление:
231000.68 – Программная инженерия
Программа:
231000.68-2 – Системы мультимедиа и компьютерная графика
Диссертация на соискание академической степени
магистра техники и технологии
Научный руководитель:
кандидат технических наук, доцент АРХИПОВ И.О.
Ижевск 2013
2
РЕФЕРАТ
Данная магистерская диссертация содержит введение, 5 глав и заключение, изложенных на 111 страницах машинописного текста. В работу включены
23 рисунка, 2 таблицы, список литературы из 6 наименований. В приложениях
представлено руководство пользователя и фрагмент исходного кода.
Во введении описываются основные моменты текущего положения
направления цифровой обработки сигналов. Указываются основные цели и задачи ЦОС, которые можно применить в различных областях, например, телефония или криминалистика. Также описывается объект и предмет и основные
методы исследования.
В первой главе представлен аналитический обзор по состоянию на июнь
2013 года. Показаны некоторые интересные решения больших корпораций таких как Google, Mircosoft, Apple, IBM, а также отечественных игроков на рынке
продуктов обработки цифровых сигналов. Также представлены некоторые свободные программные продукты, которые можно причислить к аналогам настоящей разработки, но при этом имеющие не совсем ту направленность, которая
раскрыта в данной работе. Также в этой главе на основании аналитического обзора делается вывод о необходимости настоящей разработки, а также ставятся
цели и задачи.
В следующих главах идет описание математической модели, алгоритмов
и технологий используемых при обработке цифровых речевых сигналов.
В последней главе ставится эксперимент, который показывает исключительную эффективность разработанной системы и полезность от ее внедрения.
Ключевые слова: преобразование Фурье, быстрое преобразование Фурье,
дискретное преобразование Фурье, спектрограмма, автокорреляция, коэффициенты автокорреляции, автокоррелограмма.
3
ОГЛАВЛЕНИЕ
Список сокращений .......................................................................................... 9
ВВЕДЕНИЕ...................................................................................................... 10
1.
АНАЛИТИЧЕСКИЙ ОБЗОР ................................................................. 14
1.1.
Системы распознавания естественной речи. ................................ 14
1.1.1. Голосовой поиск Google Mobile App .......................................... 14
1.1.2. Голосовой ассистент Siri.............................................................. 15
1.1.3. Голосовое управление ОС Windows Vista/7/8 ........................... 17
1.1.3.1. Голосовое управление ОС Windows Phone ......................... 17
1.2.
Системы синтеза речи ..................................................................... 18
1.2.1. Приложение для озвучивания электронных книг Читатель .... 18
1.2.2. Обобщенная многоязычная система синтеза речи Festival ...... 19
1.3.
Системы искусственного интеллекта ............................................ 19
1.4.
Обзор состояния программ автоматической сегментации .......... 20
1.4.1. Анализ цифровых сигналов при помощи Praat ......................... 20
1.4.2. Анализ цифровых сигналов при помощи Speech Analyzer ...... 20
2.
1.5.
Выводы .............................................................................................. 21
1.6.
Цель работы ...................................................................................... 21
1.7.
Постановка задачи ........................................................................... 22
МАТЕМАТИЧЕСКАЯ
МОДЕЛЬ
И
АНАЛИЗ
РЕЧЕВЫХ
СИГНАЛОВ ............................................................................................................... 23
2.1.
Речевой сигнал ................................................................................. 23
2.2.
Цифровой речевой сигнал его характеристики ............................ 24
4
2.3.
Обзор статистических моделей речевых сигналов....................... 24
2.4.
Цифровая обработка речевого сигнала.......................................... 26
2.4.1. Преобразование Фурье................................................................. 26
2.4.1.1. Дискретное преобразование Фурье ...................................... 28
2.4.1.2. Быстрое преобразование Фурье ............................................ 29
2.4.1.3. Оконная функция ................................................................... 30
2.4.1.4. Спектрограмма ....................................................................... 31
2.4.2. Автокорреляционное преобразование........................................ 32
2.4.2.1. Коррелограмма ....................................................................... 34
2.4.2.2. Автокоррелограмма ............................................................... 34
3.
МЕТОДЫ, АЛГОРИТМЫ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ И
ТЕХНОЛОГИЯ ОБРАБОТКИ ЦИФРОВЫХ РЕЧЕВЫХ СИГНАЛОВ .............. 36
3.1.
Основные требования к системе .................................................... 36
3.1.1. Основные цели создания системы и критерии эффективности
её функционирования ......................................................................................... 36
3.1.2. Функциональное назначение системы ....................................... 36
3.1.3. Основные особенности объекта автоматизации ....................... 37
3.1.4. Требования к функциональной структуре системы ................. 37
3.1.4.1. Визуализация цифрового сигнала ........................................ 37
3.1.4.2. Сегментация цифрового сигнала .......................................... 38
3.1.4.3. Сохранение результатов работы в файл .............................. 38
3.1.4.4. Структурная схема системы .................................................. 39
3.1.5. Состав типовых проектных решений и пакетов прикладных
программ, применяемых в системе. .................................................................. 39
5
3.1.6. Требования к техническому обеспечению................................. 40
3.1.7. Требования к информационному обеспечению ........................ 41
3.1.8. Требования к программному обеспечению ............................... 41
3.1.9. Перспективность системы, возможности её развития.............. 42
3.2.
Основные технические решения проекта системы ...................... 43
3.2.1. Описание организации информационной базы ......................... 43
3.2.2. Описание системы программного обеспечения ........................ 43
3.3.
Разработка программного модуля «Визуализация цифрового
речевого сигнала» .................................................................................................. 44
3.3.1. Характеристика задачи ................................................................ 44
3.3.2. Исходные данные ......................................................................... 44
3.3.3. Выходная информация ................................................................. 45
3.3.4. Математическая постановка задачи ........................................... 46
3.3.5. Описание алгоритма получения Фурье-изображения сигнала 46
3.3.5.1. Назначение и характеристика алгоритма ............................ 46
3.3.5.2. Используемая информация ................................................... 46
3.3.5.3. Результаты решения ............................................................... 47
3.3.5.4. Математическое описание ..................................................... 47
3.3.5.5. Алгоритм решения ................................................................. 48
3.3.6. Описание алгоритма получения спектрограммы ...................... 48
3.3.6.1. Функциональное назначение ................................................ 48
3.3.6.2. Описание информации........................................................... 49
3.3.6.3. Результат решения.................................................................. 50
3.3.6.4. Математическое описание ..................................................... 50
6
3.3.6.5. Алгоритм решения ................................................................. 50
3.3.7. Описание
алгоритма
получения
коэффициентов
автокорреляции ................................................................................................... 50
3.3.7.1. Назначение и характеристика алгоритма ............................ 50
3.3.7.2. Исходные данные ................................................................... 52
3.3.7.3. Результаты расчета ................................................................. 52
3.3.7.4. Математическое описание ..................................................... 52
3.3.7.5. Алгоритм решения ................................................................. 53
3.3.8. Описание алгоритма получения автокоррелограммы .............. 53
3.3.8.1. Назначение и характеристика алгоритма ............................ 53
3.3.8.2. Используемая информация ................................................... 53
3.3.8.3. Результаты решения ............................................................... 53
3.3.8.4. Математическое описание ..................................................... 55
3.3.8.5. Алгоритм решения ................................................................. 55
3.3.9. Описание контрольного примера визуализации цифрового
сигнала
55
3.3.9.1. Назначение и характеристика алгоритма ............................ 55
3.3.9.2. Исходные данные ................................................................... 55
3.3.9.3. Результаты расчета ................................................................. 56
3.3.9.4. Результаты
испытания
программы
визуализации
на
контрольном примере ...................................................................................... 57
3.4.
сигнала»
Разработка программного модуля «Сегментация цифрового
58
3.4.1. Характеристика задачи ................................................................ 58
7
3.4.2. Входная информация ................................................................... 58
3.4.3. Выходная информация ................................................................. 58
3.4.4. Математическая постановка задачи ........................................... 58
3.4.5. Алгоритм решения ....................................................................... 59
3.4.6. Описание контрольного примера ............................................... 60
3.4.6.1. Назначение контрольного примера ...................................... 60
3.4.6.2. Входные данные ..................................................................... 60
3.4.6.3. Результаты расчета ................................................................. 60
3.4.6.4. Результаты испытания программы ....................................... 60
3.5.
Разработка программного модуля «Сохранение результатов
работы в файл» ....................................................................................................... 61
3.5.1. Характеристика задачи ................................................................ 61
3.5.2. Входная информация ................................................................... 62
3.5.3. Выходная информация ................................................................. 62
3.5.4. Математическая постановка задачи ........................................... 62
3.5.5. Алгоритм решения ....................................................................... 63
3.5.6. Описание контрольного примера ............................................... 64
3.5.6.1. Назначение контрольного примера ...................................... 64
3.5.6.2. Исходные данные ................................................................... 64
3.5.6.3. Результаты расчета ................................................................. 65
3.5.6.4. Результаты испытания программы ....................................... 65
4.
АПРОБАЦИЯ СИСТЕМЫ .................................................................... 66
5.
ПРОВЕДЕНИЕ ЭКСПЕРИМЕНТА ...................................................... 67
5.1.
Гипотеза ............................................................................................ 67
8
5.2.
Постановка задачи ........................................................................... 67
5.3.
Описание эксперимента .................................................................. 67
5.4.
Результаты эксперимента ................................................................ 69
5.5.
Вывод ................................................................................................ 69
ЗАКЛЮЧЕНИЕ ............................................................................................... 71
СПИСОК ЛИТЕРАТУРЫ .............................................................................. 73
ПРИЛОЖЕНИЕ А ........................................................................................... 74
ПРИЛОЖЕНИЕ Б.......................................................................................... 101
9
Список сокращений
АКФ – автокорреляционная функция
БПФ – быстрое преобразование Фурье. Алгоритм прореживания по времени или алгоритм по основанию 2.
ДПФ – дискретное преобразование Фурье.
Система – автоматизированная система сегментации цифрового речевого
сигнала
iOS – операционная система для мобильных устройств производства Apple Inc
Siri –Speech Interpretation and Recognition Interface – персональный помощник и вопросно-ответная система адаптированная для iOS
10
ВВЕДЕНИЕ
Математический аппарат цифровой обработки сигналов стал частью
практически любого научного исследования связанного с измерительным процессом. Как правило, под обработкой сигнала понимают решение следующих
основных задач[1]:
- создание модели сигнала;
- определение параметров модели сигнала;
- обнаружение сигнала на фоне помех;
- выделение полезного сигнала из его смеси с шумом;
- преобразование сигнала из одного представления в другое;
- определение взаимозависимостей между компонентами сигнала;
- выделение значимых компонент сигнала;
- классификация сигналов.
Специфика сигналов, которая определена физической природой их появления, и цель, которая должна быть достигнута в результате обработки сигнала,
определяют выбор методов для решения той или иной задачи[1].
Специфика речевого сигнала связана с тем, что он порожден сложно
устроенным акустическим волноводом (речевым трактом), с изменяющимися
во времени геометрическими формами, а основные цели его обработки, вызванные практическими потребностями, могут быть отражены целым списком[1][2]:
- уплотнение речевого сигнала для передачи в канале (например, телефонном) с минимальной потерей информативности;
- искажение голоса диктора при условии сохранения разборчивости его
речи;
- сегментация беседы множества дикторов на монологи;
- декомпозиция беседы дикторов, т.е. расслоение сигналов по принадлежности диктору при условии их одновременного разговора;
11
- выделение характерных признаков голоса диктора и последующая его
идентификация;
- оценка эмоционального состояния диктора по его голосу;
- распознавание речи;
- идентификация языка, на котором говорит диктор.
Последние шесть задач можно назвать задачами классификации речевых
сигналов, так как они связаны с принятием решения о принадлежности сигнала
или участка сигнала тому или иному множеству (классу).
При решении любой из перечисленных задач классификации, возникает
проблема, связанная с выбором вектора признаков, которым будет характеризоваться акустические колебания. Выбор тех или иных признаков определяется
как знаниями физиологии органов слуха и психоакустическими данными, так и
требованием согласованности последующей модели принятия решения и вектора признаков[2][3].
Для формирования признаков в общей структуре систем классификации
речевых сигналов используются[1][2][3][4]:
- Устройство ввода звукового сигнала;
- Детектор речи;
- Фильтрация звукового сигнала;
- Предварительная обработка сигнала.
Предварительная обработка речевого сигнала предназначена для формирования последовательности векторов признаков спектрального характера и
для нормализации последовательности этих векторов относительно темпа речи
или длины речевого тракта диктора. Существуют следующие методы предварительной обработки сигнала[4]:
- Цифровые фильтры;
- Преобразование Фурье;
12
- Линейное предсказание;
- Вейвлет анализ.
Объектом исследования данной работы являются цифровые речевые сигналы, их особенности, свойства и характеристики, их структура, математические модели этой структуры и ее представления, способы формирования и преобразования таких представлений и возможности их использования в системах
обработки звуковой информации.
Предметом исследования являются методы моделирования и анализа
структуры цифровых речевых сигналов, способы получения представлений
этой структуры и построения их математических моделей. Основанные на этих
моделях методы обнаружения, распознавания и оценки структурных элементов
речевых сигналов, реализующие эти методы алгоритмы, программы и технологии обработки цифровых речевых сигналов, а также оценки их эффективности
и возможностей практической реализации при решении различных прикладных
задач, связанных с обработкой цифровой звуковой информации.
Методы исследования. В работе применялись теоретические и экспериментальные методы исследования.
Теоретические исследования основаны на использовании функционального анализа, быстром и дискретном преобразовании Фурье, автокорреляции,
теории обработки и анализа цифровых сигналов.
В экспериментальных исследованиях разработанных моделей и алгоритмов использовались методы моделирования представлений цифровых речевых
сигналов, системного анализа, цифровой обработки цифровых речевых сигналов, системного программирования.
Достоверность изложенных положений работы подтверждается результатами практического применения разработанных методов, алгоритмов, про-
13
граммных средств и технологии обработки графической информации, апробациями созданного научно-технического продукта при помощи патентного бюро. Достоверность и обоснованность полученных в работе результатов и выводов подтверждается при их сравнительном анализе с известными результатами
современных исследований и разработок.
Теоретические положения, установленные в работе, обосновываются
адекватным выбором исходных посылок и последовательным применением математического аппарата при получении из них выводов, а также верификацией
этих выводов данными систематического исследования полученных аналитических результатов.
Достоверность экспериментальных результатов подтверждается их согласованностью с теоретическими выводами, обоснованным выбором корректных
критериев при построении алгоритмов обработки информации, воспроизводимостью результатов на больших объемах экспериментального материала при
выполнении серий вычислительных экспериментов, с большим количеством
изменяемых значений влияющих параметров, наглядностью интерпретации полученных практических результатов обработки информации.
14
1.
АНАЛИТИЧЕСКИЙ ОБЗОР
Системы обработки речевых сигналов сейчас развиваются очень широко.
В последнее время друг за другом Google, Apple, Microsoft представили свои
решения в области распознавания голоса. Вниманию представляются наиболее
популярные и знаковые разработки.
1.1.
Системы распознавания естественной речи.
1.1.1. Голосовой поиск Google Mobile App
Google встроил технологию распознавания голоса в приложение Google
Mobile App для iPhone, платформы Nokia S60, а также во все мобильные
устройства под управлением операционной системы Android.
Для поиска в Google необходимо лишь поднести аппарат к уху и начать
говорить. Приложение, используя датчики движения, гироскоп либо акселератор, самостоятельно определит момент начала записи поискового запроса. Далее Google Mobile App автоматически начнет искать запрос в интернете при
помощи поисковой системы Google. Никаких кнопок, никаких клавиатур.
Также можно искать организации, находящиеся рядом. К примеру, если
пользователь запросит "Пицца" находясь в Москве, Санкт-Петербурге, Ижевске
и т.д. Google Mobile App выдаст список пиццерий, находящихся поблизости, с
адресами, телефонами и ссылками на официальные сайты.
Для того чтобы узнать адрес, телефон или схему проезда к ней достаточно лишь произнести ее название.
Приложение позволяет искать даже изображения. Например, по запросу
"Фотографии Храма Христа Спасителя" Google Mobile App в дополнение к
обычным результатам поиска также отобразит найденные изображения.
15
Google Mobile App не ограничивает пользователя методами поиска. В
случае если запись голосового запроса невозможна, приложение позволяет ввести запрос с клавиатуры. В дополнение к этому, чтобы было проще и быстрее
искать, программа пытается предугадать интерес пользователя, выдавая возможные варианты требуемого запроса в момент ввода. Поиск в Google персонализирован, т.е. варианты подбираются по имеющейся поисковой истории, а
также по самым популярным запросам. Как результат: искать стало быстрее,
печатать нужно меньше.
Если же аппарат не имеет сложной системы датчиков, акселераторов или
гироскопа, то в приложении имеется кнопка, нажав на которую, можно начать
говорить текст запроса.
Приложение интегрировано с Google Mail, Google News и прочими сервисами для удобства пользователя.
1.1.2. Голосовой ассистент Siri
Siri (англ. Speech Interpretation and Recognition Interface) – персональный
помощник и вопросно-ответная система, адаптированная для iOS. Данное приложение использует обработку естественной речи, чтобы отвечать на вопросы и
давать рекомендации. Приложение приспосабливается к каждому пользователю
индивидуально, изучая его предпочтения в течение долгого времени.
Первоначально Siri стало доступно в App Store как приложение для iOS
от Siri Inc. Вскоре, 28 апреля 2010 года, Siri Inc. была приобретена Apple Inc.
Сейчас Siri – неотъемлемая часть iOS 5, iOS 6 и доступна для iPhone 4S и
iPhone 5. Также, Siri появилась в iPad третьего и четвёртого поколений, iPad
mini а также iPod touch пятого поколения. Несмотря на это, хакеры смогли приспособить Siri для старых моделей iPhone. 8 ноября 2011 Apple публично за-
16
явила, что у неё нет планов на интеграцию Siri в старые модели iPhone, в связи
с отсутствием на них чипа фильтрации фонового шума.
Siri впервые было запущено как приложение, доступное в App Store, в
США. Приложение взаимодействовало с такими сервисами как OpenTable,
Google Maps, MovieTickets и TaxiMagic. Используя технологию голосовой
идентификации, пользователи могли зарезервировать столики в ресторанах, купить билеты в кино или вызвать такси, используя естественный язык для обращения к Siri.
С развитием системы увеличивалось также и количество функций. Сейчас по запросу, благодаря интеграции с множеством интернет сервисов, Siri
может:
1.
порекомендовать рестораны, фильмы, а также бронировать билеты
и столики;
2.
предоставлять информации о спортивных играх (счёт, биография,
состав, матчи и т. д.);
3.
открывать приложения, установленные на устройстве;
4.
отправлять сообщения в социальные сети, такие как Twitter,
Facebook и пр.;
5.
рассчитывать маршруты по картам;
6.
использовать приложение Apple Store (например, команда «Buy
iPhone 5»).
На данный момент поддерживаются английский (США, Великобритания,
Канада и Австралия), немецкий, японский и французский языки. Позднее были
добавлены китайский, итальянский, корейский и испанские языки.
17
1.1.3. Голосовое управление ОС Windows Vista/7/8
Голосовое управление операционной системой Windows осуществляется
при помощи программы Windows Speech Recognition.
Windows Speech Recognition позволяет пользователю управлять компьютером посредством специфичных команд, которые задаются естественным языком. Программа также может быть использоваться для набора текста. Так пользователь может вводить текст в компьютер, используя свой собственный голос.
Приложением, которое не поддерживает специфичные голосовые команды, можно управлять, наложив числа поверх интерфейса. Далее, используя эти
числа, можно активировать функции, которые им соответствуют.
Если приложением нужно управлять при помощи мыши, то можно запросить разбить экран на сектора (по умолчанию 9) с номерами и выбрать один.
Далее этот сектор также разбивается на девять секций, из которых можно выбрать одну. Данная операция продолжается до тех пор, пока нужная точка не
будет достигнута.
Windows Speech Recognition имеет довольно высокую точность распознавания голоса и обеспечивает обширный набор команд, которые помогают при
диктовке текста. Удобный помощник поможет быстро найти нужную команду.
На данный момент поддерживаются: английский (США, Великобритания,
Канада и Австралия), немецкий, японский, французский, китайский и испанские языки.
1.1.3.1.
Голосовое управление ОС Windows Phone
Windows Phone – это операционная система для мобильных устройств,
основанная на Windows.
18
Для Windows Phone 7.5 приложения для распознавания голоса называется
Speech. Данное приложение позволяет:
1.
пользователю позвонить кому-нибудь. Для этого можно либо про-
диктовать номер, либо выбрать контакт из имеющейся адресной книги;
2.
повторно позвонить на последний набранный номер;
3.
отправить текстовое сообщение;
4.
прослушать сообщения из голосовой почты;
5.
открыть имеющееся приложение;
6.
выполнить поиск в интернете.
Также в течение звонка доступно: нажать номер, включить/выключить
динамики или позвонить кому-либо. Текущий звонок переходит в режим ожидания.
1.2.
Системы синтеза речи
1.2.1. Приложение для озвучивания электронных книг Читатель
Приложение Читатель при помощи технологии синтеза речи, разработанной в ЦРТ, озвучивает любые электронные книги из любых бесплатных источников. При этом не требуется постоянно подключение к интернету.
Пользоваться приложением достаточно просто. Есть несколько удобных
способов добавления книг для чтения. Книгу можно скачать из раздела закладок или использовать поиск книги через встроенный браузер. Скаченная книга
открывается помощью «Читателя». Существует возможность добавления собственных текстов через iTunes. После добавления файлов через iTunes, достаточно просто встряхнуть iPhone или iPad, и новые файлы появятся в библиотеке.
19
На данный момент приложение доступно только для устройств, работающих на базе операционной системы iOS.
1.2.2. Обобщенная многоязычная система синтеза речи Festival
Festival – обобщенная многоязычная система синтеза речи, разработанная
Аланом В. Блэком в Исследовательском Центре Речевых Технологий (CSTR) в
университете Эдинбурга. Она предлагает полную систему синтеза речи с различными API, а также среду для разработки и исследования методов синтеза
речи.
Festival предназначен для поддержки нескольких языков и поставляется с
поддержкой английского (США, Великобритания, Канада и Австралия), валлийского и испанского языков. Для передачи голосовых пакетов существуют
несколько других языков, таких, как кастильский испанский, чешский, финский, хинди, итальянский, маратхи, польский, русский и телугу.
Проект Festvox стремится сделать создание новых синтетических голосов
более систематизированной и точной процедурой. Распространяется под свободной лицензией, аналогичной лицензии MIT.
1.3.
Системы искусственного интеллекта
IBM Watson – суперкомпьютер фирмы IBM, оснащенный системой ис-
кусственного интеллекта. Основная задача Watson – понимать вопросы, сформулированные на естественном языке и находить на них ответы в базе данных.
В качестве проверки возможностей Watson в 2011 был отправлен на телевикторину «Риск!», в которой одержал победу. Один из его противников был
игрок, который выиграл наибольшее количество игр. Другой известен тем, что
смог получить наибольший выигрыш за всю историю. Во время игры Watson
20
был отключен от интернета и пользовался только информацией, которая хранилась на его локальных жестких дисках.
В конце 2012 года Watson был зачислен в медицинскую академию Гарварда. Спустя три месяца он освоил весь доступный материал и был направлен
в больницу, в качестве диагноста, где успешно ставит диагнозы и рекомендует
лечение.
Обзор состояния программ автоматической сегментации
1.4.
1.4.1. Анализ цифровых сигналов при помощи Praat
Praat – это свободное программное обеспечение, предназначенное для
анализа речи в фонетике. Приложение можно запускать на множестве операционных систем, включая различные Unix-подобные системы, MacOS и семействе
Microsoft Windows. Программа также имеет возможность синтеза речи.
Программа имеет достаточно бедные инструменты сегментации сигнала,
также результат работы по сегментации нельзя выгрузить в файл для дальнейшего использования.
1.4.2. Анализ цифровых сигналов при помощи Speech Analyzer
Speech Analyzer – это программное обеспечение для акустического анализа речевых сигналов. Поддерживает решение задач:
1.
получить частоту опроса;
2.
добавить фонемы, орфографию, тон и транскрипцию к фонетиче-
ской транскрипции в подстрочный формат;
3.
нала;
выполнить музыкальный этнографический анализ записанного сиг-
21
4.
замедлить воспроизведение, повторять циклы для оказания помощи
в восприятии звуков для изучения языка.
Данная программа распространяется как свободное программное обеспечение.
Программа имеет инструменты сегментации сигнала, но также результат
работы по сегментации нельзя выгрузить в файл для дальнейшего использования.
1.5.
Выводы
1. Системы обработки цифровых речевых сигналов в настоящее время
развиваются очень широко, о чем повествует огромное разнообразие различных
приложений, так или иначе сталкивающихся с обработкой естественной речи;
2. В подавляющем большинстве системы обрабатывают входные данные
или предоставляют выходные данные, основываясь на имеющихся знаниях.
Следовательно, для того, чтобы система могла нормально функционировать
необходимо предварительное обучение, основанное на фрагментах эталонного
цифрового речевого сигнала;
3. Создание фрагментов необходимого текста для обучения либо отсутствует, либо не автоматизировано.
1.6.
Цель работы
Целью данной работы разработка технологии и создание программного
обеспечения для автоматизации процесса ручной сегментации цифрового речевого сигнала, реализующего разработанные средства и методы моделирования
и анализа цифровых речевых сигналов.
22
1.7.
Постановка задачи
Для достижения поставленной цели ставится задача реализации инстру-
мента цифрового речевого сигнала. Основные задачи, решаемые с помощью
данного инструмента:
1. Визуализация цифрового речевого сигнала в следующих представлениях:
1.1. Дискретное, как зависимость амплитуды от времени;
1.2. Спектральное, как зависимость спектральной плотности мощности сигнала от времени;
1.3. Автокорреляционное, как зависимость коэффициентов автокорреляции
от времени.
2. Сегментация речевого сигнала посредством манипулятора мышь;
3. Выгрузка результатов работы в файл.
23
МАТЕМАТИЧЕСКАЯ МОДЕЛЬ И АНАЛИЗ РЕЧЕВЫХ СИГНАЛОВ
2.
2.1.
Речевой сигнал
Речь предназначена для общения. Возможности речи с этой точки зрения
можно характеризовать по-разному. Один из количественных подходов основан
на теории информации, разработанной Шенноном. В соответствии с этой теорией речь можно описать ее информационным содержанием или информацией.
Другой способ описания речи заключается в представлении ее ив виде сигнала,
т. е. акустического колебания. Хотя идеи теории информации играют важную
роль при построении сложных систем связи, но наиболее полезными на практике являются представления речи в виде колебания или в виде некоторой параметрической модели[2][3][6].
Сообщение, передаваемое с помощью речевого сигнала, является дискретным, т. е. может быть представлено в виде последовательности символов
из конечного их числа.
В системах речевой связи сигнал передается, хранится и обрабатывается
различными способами. Задачи техники обусловливают применение различных
форм представления речевого сигнала. Однако во всех случаях им присущи
следующие особенности[4]:
1.
сохранение информационного содержания речевого сигнала;
2.
представление речевого сигнала в форме, удобной для передачи и
хранения, или в виде, позволяющем легко и достаточно гибко преобразовывать
речевой сигнал без существенных информационных потерь.
Представление речевого сигнала должно быть таким, чтобы его информационное содержание легко воспринималось автоматически с помощью машины или при прослушивании человеком[2].
24
2.2.
Цифровой речевой сигнал его характеристики
Любой непрерывный (аналоговый) сигнал s(t) может быть подвергнут
дискретизации по времени и квантованию по уровню (оцифровке), то есть,
представлен в цифровой форме. Если частота дискретизации сигнала Fd не
меньше, чем удвоенная наивысшая частота в спектре сигнала F max (то есть Fd >=
2* Fmax), то полученный дискретный сигнал s(k) эквивалентен сигналу s(t) по
теореме Котельникова. Таким образом, цифровой сигнал описывается частотой
дискретизации и значениями амплитуды в конкретных отсчетах.
Важным свойством цифрового сигнала, определившего его доминирование в современных системах связи, является его способность к полной регенерации вплоть до некоторого порогового отношения сигнал/шум, в то время как
аналоговый сигнал удаётся лишь усилить вместе с наловившимися на него шумами. Здесь же кроется и недостаток цифрового сигнала: если цифровой сигнал
утопает в шумах, восстановить его невозможно, в то время как человек (не машина) может усвоить информацию из сильно зашумлённого сигнала на аналоговом радиоприёмнике, хотя и с трудом[2].
2.3.
Обзор статистических моделей речевых сигналов
Если предположить, что сигнал xa(t) представляет собой непрерывный
процесс, то периодическая последовательность отсчетов этого сигнала может
рассматриваться как случайный процесс с дискретным временем[2][3][5]. В ряде случаев при анализе систем связи адекватными характеристиками аналогового сигнала являются одномерная функция плотности вероятности и автокорреляции функция, определенная выражением[2]
(2.1)
25
где E[…] означает усреднение по ансамблю величины, стоящей в квадратных скобках.
Непрерывная спектральная плотность мощности представляет собой преобразование Фурье[3]
(2.2)
Сигнал с дискретным временем, полученный из непрерывного сигнала,
имеет автокорреляционную функцию
(2.3)
Это просто дискретизированная функция
, поэтому спектральная
плотность мощности равна
(2.4)
26
Из этого следует, что спектральная плотность дискретизированного сигнала представляет собой периодическую последовательность, каждый член которой повторяет спектр аналогового сигнала[2][3][4][5][6].
2.4.
Цифровая обработка речевого сигнала
Обработка сигнала предполагает в первую очередь формирование описа-
ния, т.е. выбор совокупности физических параметров, определяющих процесс
восприятии речи, на основе некоторой модели с последующим преобразованием полученного представления в требуемую форму. Последним ‚шагом в процессе обработки является выделение и использование информационного содержания сигнала. Этот шаг может осуществляться путем прослушивания сигнала человеком или его автоматической обработки[2][4][6].
Цифровая обработка включает как получение дискретных представлений
сигнала, так и теорию, расчет и применение цифровых алгоритмов для преобразования полученных дискретных представлений. Конечная цель цифровой обработки сигналов такая же, как и при аналоговой обработке. Использование
цифровых методов позволяет реализовать достаточно сложные алгоритмы обработки.
Различают методы обработки сигналов во временной и в частотной области. Эквивалентность частотно-временных преобразований однозначно определяется через преобразование Фурье[3][4].
2.4.1. Преобразование Фурье
В обработке сигналов и связанных областях преобразование Фурье обычно рассматривается как декомпозиция сигнала на частоты и амплитуды, то есть
27
обратимый переход от временного пространства в частотное пространство. Богатые возможности применения основываются на нескольких полезных свойствах преобразования[2]:
1.
Преобразования являются линейными операторами и, с соответ-
ствующей нормализацией, унитарными (свойство, известное как теорема Парсеваля, или, в более общем случае, как теорема Планшереля, или, в наиболее
общем, как дуализм Понтрягина).
2.
Преобразования обратимы, причём обратное преобразование имеет
практически такую же форму, как и прямое преобразование.
3.
Синусоидальные базисные функции (вернее, комплексные экспо-
ненты) являются собственными функциями дифференцирования, что означает,
что данное представление превращает линейные дифференциальные уравнения
с постоянными коэффициентами в обычные алгебраические. (Например, в линейной стационарной системе частота – консервативная величина, поэтому поведение на каждой частоте может решаться независимо).
4.
По теореме о свёртке, преобразование Фурье превращает сложную
операцию свёртки в простое умножение, что означает, что они обеспечивают
эффективный способ вычисления основанных на свёртке операций, таких как
умножение многочленов и умножение больших чисел.
5.
Дискретная версия преобразования Фурье может быть быстро рас-
считана на компьютерах с использованием алгоритма быстрого преобразования
Фурье (БПФ).
Описание сигнала в дискретном времени с помощью преобразования
Фурье задается в виде[2]
28
(2.5)
Важная особенность преобразования Фурье последовательности состоит
в том, что оно является периодической функции ω с периодом 2π.
2.4.1.1.
Дискретное преобразование Фурье
ДПФ одно из разновидностей преобразования Фурье. Если последовательность периодическая с периодом N, т.е.
(2.6)
то x(n) можно представить в виде суммы синусоид. Преобразование Фурье для
периодической последовательности имеет вид[2][3][6]
2𝜋𝑖
− 𝑘𝑛
𝑋𝑘 = ∑𝑁−1
,0≤𝑘 ≤𝑁−1
𝑛=0 𝑥𝑛 𝑒 𝑁
(2.7)
Следует также отметить, что все последовательности при использовании
ДПФ ведут себя так, как если бы они были периодическими функциями, т.е.
ДПФ является на самом деле представлением периодической функцией времени.
При фиксированном значении k и n = [0;N-1] требуется выполнить N операций умножения N-1 операций. В целом же при k=[0;N-1] необходимо выполнить N * 2N = 2N2 операций. Следовательно, порядок вычислительной сложности алгоритма для вычисления ДПФ оценивается как 𝑂(𝑁 2 ).
29
Дискретное преобразование Фурье со всеми его особенностями является
важным способом описания сигналов по следующим причинам[2][3]:
1.
ДПФ можно рассматривать как дискретизированный вариант z-
преобразования (или преобразования Фурье) последовательности конечной
длительности;
2.
ДПФ очень сходно по своим свойствам (с учетом периодичности) с
преобразованием Фурье и z-преобразованием;
3.
N значений X(k) можно вычислить с использованием эффективного
(время вычисления пропорционально 𝑂(𝑁 log(𝑁))) семейства алгоритмов, известных под названием быстрых преобразований Фурье (БПФ).
Дискретное преобразование Фурье широко используется при вычислении
корреляционных функций, спектров и при реализации цифровых фильтров.
Также широко применяется в сжатии звука, а также других областях, связанных
с анализом частот в дискретном (к примеру, оцифрованном аналоговом) сигнале. Дискретное преобразование Фурье помогает решать частные дифференциальные уравнения и выполнять операцию свёртки. Дискретные преобразования
Фурье также активно используются в статистике, при анализе временных рядов[1][2][3][5].
2.4.1.2.
Быстрое преобразование Фурье
Быстрым преобразованием Фурье называют не еще одну разновидность
преобразования Фурье, а целый набор алгоритмов, предназначенных для быстрого вычисления ДПФ.
Наибольшее распространение получил алгоритм БПФ с основанием 2, известный также как алгоритм Кули-Тьюки. Существуют два эквивалентных по
эффективности алгоритма БПФ с основанием 2: алгоритм с прореживанием по
частоте и алгоритм с прореживанием по времени. В любом из них длине вход-
30
ного сигнала должна являться степенью 2. Если такое ограничение не соблюдается, то необходимо дополнить последовательность необходимым количеством
нулей[3][4].
В алгоритме с прореживанием по частоте скорость вычисления ДПФ возрастает за счет распараллеливания вычислений.
Прямое преобразование Фурье вычисляется по формуле[2][3]:
M 1
X m   x2n a
n 0
nm
M
e
 2i
m M 1
N
mn
 2i
N nm
, (2.8)
x 2 n 1 a , M  , a M  e N

2
n 0
nm
M
где Xm – значение функции в отсчете m;
M – длина сигнала;
m – отсчет.
Порядок вычислительной сложности алгоритма для вычисления ДПФ
оценивается как 𝑂(𝑁 log(𝑁))[3][5][6]. Скорость вычисления достигается за счет
предъявления требования к длине входного сигнала (должна являться степенью
2).
2.4.1.3.
Оконная функция
Решение задач аппроксимации требует введения весовой функции, зависящей от частоты. Такая функция позволяет перераспределять ошибки по интервалам аппроксимации. Весовая функция позволяет уменьшить погрешность
вычислений в нужных частотах[1][2][3].
Оконная функция – это весовая функция, которая используется для
управления эффектами, обусловленными наличием боковых лепестков в спек-
31
тральных оценках (растеканием спектра)[2][3]. Имеющуюся конечную запись
данных или имеющуюся конечную корреляционную последовательность удобно рассматривать как некоторую часть соответствующей бесконечной последовательности, видимую через применяемое окно. Например, последовательность
наблюдаемых данных x0[n] из N отсчётов математически можно записать как
произведение прямоугольной функции единичной амплитуды[3]
1, 0 ≤ 𝑛 ≤ 𝑁 − 1;
𝑟𝑒𝑐𝑡[𝑛] = {
0
(2.9)
и бесконечной последовательности 𝑥0 [𝑛] = 𝑥[𝑛] ∙ 𝑟𝑒𝑐𝑡[𝑛].
При этом принимается очевидное допущение, что все ненаблюдаемые отсчёты равны нулю независимо от того, так ли это на самом деле или нет. Дискретное преобразование Фурье (ДПФ) взвешенное окном последовательности,
выраженной через преобразование последовательности 𝑥[𝑛] и прямоугольного
окна rect[n], равно свёртке этих преобразований 𝑋0 (𝑓) = 𝑋(𝑓) ∗ 𝐷𝑁 (𝑓), где
𝐷𝑁 (𝑓) – дискретная функция кардинального синуса или ряд Дирихле, представляющий собой ДПФ прямоугольной функции[3][6].
2.4.1.4.
Спектрограмма
Спектрограмма – это изображение, показывающее зависимость спектральной плотности мощности сигнала от времени[2].
Наиболее распространенным представлением спектрограммы является
двумерная диаграмма: на горизонтальной оси представлено время, по вертикальной оси – частота. Третье измерение с указанием амплитуды на определенной частоте в конкретный момент времени представлено интенсивностью или
цветом каждой точки изображения[2][4].
Воспользовавшись методами расчета ДПФ можно получить комплексное
двумерное представление речевого сигнала с дискретным временем и частотой
32
и, кроме того, периодическое по частоте. Для создания изображения достаточно
использовать только действительную часть полученных значений. Т.к. полученная последовательность четна, достаточно отображать только значения из
интервала 0 ≤ k ≤ N/2.
Спектрограмма рассчитывается по сигналу времени, используя оконное
преобразование Фурье. Создание спектрограммы с помощью оконного преобразования Фурье обычно выполняется методами цифровой обработки. Производится цифровая выборка данных во временной области. Сигнал разбивается
на части, которые, как правило, перекрываются, и затем производится преобразование Фурье, чтобы рассчитать величину частотного спектра для каждой части. Каждая часть соответствует вертикальной линии на изображении – значение амплитуды в зависимости от частоты в каждый момент времени. Спектры
или временные графики располагаются рядом на изображении или трёхмерной
диаграмме[2][5][6].
Цифровые спектрограммы полезнее любых других способов отображения
энергии сигнала. Основное преимущество заключается в удобстве формирования спектра разнообразными способами, что увеличивает полезность дисплея[2].
Также по детальному анализу спектрограммы можно произнесенной фразы можно установить личность диктора.
2.4.2. Автокорреляционное преобразование
Автокорреляция – это статистическая взаимосвязь между случайными величинами из одного ряда, но взятых со сдвигом. Для цифровых сигналов со
сдвигом по времени[5][6].
Автокорреляционная функция – это характеристика сигнала, которая помогает находить повторяющиеся участки сигнала или определять несущую ча-
33
стоту сигнала, скрытую из-за наложений шума и колебаний на других частотах[2][6].
Для сигнала f(t) непрерывная автокорреляция 𝑅𝑓𝑓 (𝜏), наиболее часто
определяется как связь сигнала с самим собой, сдвинутым на некую величину
𝜏[4][5]
∞
𝑅𝑓𝑓 (𝜏) = (𝑓 (𝑡) ∗ 𝑓 (̅ −𝑡)) (𝜏) = ∫−∞ 𝑓(𝑡)𝑓 ̅ (𝑡 − 𝜏) 𝑑𝑡
(2.10)
где 𝑓 ̅ – комплексная сопряженное. Для вещественных функций 𝑓 ̅ ≡ 𝑓;
* – операция свертки.
Для дискретного сигнала автокорреляционная функция определяется
формулой[4][5]:
𝑁−1
𝜓(𝜏) = ∑ 𝑓(𝑡) ∙ 𝑓(𝑡 − 𝜏)
(2.11)
𝑡=0
где N – длина интервала анализа;
f(t) – значение функции в момент времени t;
𝜏 – смещение интервала анализа.
и показывает связь сигнала
с копией самого себя, смещённого на величину
.
Автокорреляция обладает следующими свойствами[4][5]:
1.
фундаментальное свойство функции автокорреляции – это симмет-
ричность: R(i) = R(−i). В непрерывном случае автокорреляция – это четная
функция:
;
34
2.
непрерывная функция автокорреляции достигает максимума в 0, так
как для любого сдвига
:
. Аналогичное утверждение верно и
для дискретного случая;
3.
автокорреляция периодической функции – это периодическая
функция с тем же периодом;
4.
автокорреляция суммы двух некоррелирующих функций – это сум-
ма автокорреляций этих функций;
5.
Автокорреляция континуального белого шума имеет высокий пик
(представимый как дельта-функция Дирака) в нуле и равна нулю во всех других
точках.
2.4.2.1.
Коррелограмма
Коррелограмма или график автокорреляции – в анализе временных рядов
график зависимости автокорреляции выборки rh от временной задержки h[4].
Обычно коррелограммой пользуются для того, чтобы проверить хаотичность в наборе данных. Эта хаотичность проверяется вычислением автокорреляций значений данных с переменными временными задержками. Если данные
действительно случайны, такие автокорреляции должны быть близки к нулю
для любого и каждого значения сдвига по времени. Если они не случайны (имеется скрытая осциллирующая зависимость), то одна или больше автокорреляций будут значительно отличаться от нуля. Значение коэффициентов автокорреляции должно быть почти равно нулю для хаотических процессов[2][4][5][6].
2.4.2.2.
Автокоррелограмма
Автокоррелограмма – это изображение, показывающее изменение коэффициентов корреляции со временем[4].
35
Автокоррелограмма рассчитывается по сигналу времени, используя автокорреляционную функцию. Создание автокоррелограммы с помощью автокорреляционную функцию обычно выполняется методами цифровой обработки.
Производится цифровая выборка данных во временной области. Сигнал разбивается на части, которые, как правило, перекрываются, и затем производится
автокорреляционное преобразование, чтобы рассчитать коэффициенты автокорреляции для каждой части. Каждая часть соответствует вертикальной линии
на изображении – значение амплитуды в зависимости от смещения в каждый
момент времени[5][6].
36
3.
МЕТОДЫ, АЛГОРИТМЫ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ И
ТЕХНОЛОГИЯ ОБРАБОТКИ ЦИФРОВЫХ РЕЧЕВЫХ СИГНАЛОВ
3.1.
Основные требования к системе
3.1.1. Основные цели создания системы и критерии эффективности её функционирования
Основополагающей причиной создания системы, является большая потребность в автоматизации процесса сегментации цифрового сигнала при выполнении научных исследований, проведении лабораторных и практических
работ, и, как следствие, цель – автоматизация сегментации цифрового речевого
сигнала.
Работа по сегментации очень утомительна и рутинна и выполняется непосредственно человеком, что дает малую производительность недостаточную
точность определения требуемого отсчета в сигнале. Эта неточность обычно
связана как с монотонностью и однообразностью работы, так и с человеческим
фактором. Автоматизация этих механизмов дает повышение производительности, причем не только одного студента или преподавателя, непосредственно занятого сегментацией сигнала, но и всей группы в целом, а также значительное
повышение точности при сегментации.
3.1.2. Функциональное назначение системы
Данная система предназначена для визуализации цифрового сигнала для
первичной обработки, анализа и сегментации цифрового сигнала. Под визуализацией подразумевается отображение дискретного, спектрального, автокорреляционного представления сигнала. Также система должна позволять со-
37
хранить результаты работы на внешний носитель для последующего их использования.
3.1.3. Основные особенности объекта автоматизации
При проведении научных исследований или выполнении лабораторных
или практических работ оператору обычно приходится обрабатывать большое
число сигналов. Чтобы подобрать требуемый отсчет в кратчайшие сроки, программа должна быть достаточно быстрой и простой в освоении. Также программа должна выдавать полную информацию о каждом обрабатываемом сигнале. Выходная информация, генерируемая системой, должна быть простой и
наглядной.
3.1.4. Требования к функциональной структуре системы
3.1.4.1.
Визуализация цифрового сигнала
Данная система должна предоставлять данные о сигнале для первичной
обработки и анализа исследуемого сигнала.
Задачу отображения представления данных для первичного анализа можно разбить на несколько подзадач: это вычисление спектра сигнала, автокорреляционной функции и создание графической оболочки для визуализации результатов работы.
Для вычисления спектра сигнала и автокорреляционной функции лучше
всего реализовать математический аппарат, который, на основании формул,
вычисляет результат. Этот математический аппарат передает данные графической оболочке для отображения.
38
Графическая оболочка предназначена для наглядного отображения представлений сигнала, а так же для изменения масштаба или параметров построения. На вход она принимает данные из математического аппарата. Выходными
данными являются графики, выводимые на экран.
3.1.4.2.
Сегментация цифрового сигнала
Сегментация, как объект автоматизации, производится с использованием
манипулятора «мышь».
Задача сегментации сигнала сводится к созданию обработчика, который
на вход будет принимать данные, соответствующие координатам мыши. На выходе наблюдаются маркеры, засечки на представлениях сигнала с некоторыми
комментариями к ним. Принятые координаты сохраняются во внутренней переменной для последующего сохранения на внешний носитель.
Задача вывода маркеров сегментации на экран. Требуется некоторая графическая оболочка, которая принимает на вход координаты и строит по ним
вертикальный маркер одного из двух типов: именованный, безымянный для визуального сегментирования сигнала.
3.1.4.3.
Сохранение результатов работы в файл
Задача сохранения результатов сводится к созданию обработчика, на вход
которого поступает номер сигнала из внутреннего реестра сигналов, а на выходе значение true, если сохранение удачное, и false, если произошла ошибка сохранения данных на внешний носитель.
Задача сохранения результатов работы также требует графическую оболочку, под тип диалогового сообщения, которая принимает на вход результат
сохранения и оповещает об этом оператора.
39
3.1.4.4.
Структурная схема системы
Система состоит из трех подсистем: подсистема работы с входным сигналом, подсистема сегментации цифрового сигнала и подсистема сохранения результатов работы на внешний носитель. Данные подсистемы работают непосредственно с файловой системой. Структурная схема представлена на рисунке
3.1
Рисунок 3.1
3.1.5. Состав типовых проектных решений и пакетов прикладных программ,
применяемых в системе.
В разработанной системе типовыми решениями системы является использование языка высокого уровня Microsoft C# 4.0 и .Net Framework 4.0. Для
быстрого создания пользовательского интерфейса в качестве библиотеки графических виджетов использовалась библиотека Windows Presentation Frame-
40
work 4. В качестве каркаса для создания графиков была использована свободная
библиотека Dynamic Data Display 2.0. Для сохранения выходных данных использовалось расширение языка C# LINQ to XML.
3.1.6. Требования к техническому обеспечению
Техническое обеспечение систем зачастую бывает несколько завышенным, чтобы сделать так называемый запас надежности. Для разработанной системы необходимо руководствоваться в первую очередь минимумом, при котором система сохраняет свою нормальную работоспособность при средней производительности.
Так как система работает с большими объемами данных, находящимися на
жестком диске ПК, то наиболее критичными будут требования к той аппаратной части, которая напрямую отвечает за скорость обработки данных.
Таким образом, выделяются следующие требования к техническому
обеспечению системы:
1.
рабочее место должно быть оснащено персональным компьютером;
2.
персональная ЭВМ должна иметь процессор типа Intel Core 2duo 2.4
ГГц либо аналогичная модель AMD;
3.
свободный объем оперативной памяти должна составлять не менее
1 Гб, рекомендуемый объем оперативной памяти – 2 Гб;
4.
жесткий диск должен иметь свободное пространство не менее 10
5.
персональный компьютер должен быть оборудован манипулятором
Мб;
типа «мышь» с разъемом PS/2 либо USB 2.0;
6.
минимально-допустимое разрешение дисплея 1024x768. Персо-
нальный компьютер должен быть оборудован видеоадаптером, поддерживающим данный режим.
41
3.1.7. Требования к информационному обеспечению
Информационное обеспечение системы подразумевает совокупность информации, необходимой и достаточной для нормального функционирования
подсистемы и выполнения подсистемой возложенных на нее функций и задач.
Функциями информационного обеспечения являются определение оптимальных объемов информации и оптимальной структуры данных, своевременное
обновление и обслуживание данных, направление потоков данных.
Информационное обеспечение должно обладать развитой структурой и
связями внутри системы, с возможностью установления связей с внешними системами. Задачи подсистемы характеризуются достаточно большими объемами
информации. Поэтому информационная база и средства ее обслуживания
должны способствовать максимально быстрому поиску необходимых данных,
нахождению взаимосвязанных данных.
3.1.8. Требования к программному обеспечению
Эксплуатация системы сегментации цифрового речевого сигнала возможна только при соблюдении следующих требований к программному обеспечению:
1.
персональный компьютер должен работать под управлением ОС
Windows либо Unix-подобной;
2.
наличие виртуальной машины .NetFramework для операционных
систем семейства Windows либо виртуальной машины Mono для операционных
систем семейства Unix;
3.
все устройства должны быть оснащены драйверами для корректной
работы с ними (монитор, мышь, клавиатура).
42
Этот перечень обязательных требований может быть дополнен сервисными программными продуктами для облегчения работы и/или повышения
производительности.
3.1.9. Перспективность системы, возможности её развития
Разработанная система автоматизирует лишь часть работ, однако, только
это уже освобождает студентов и преподавателей от рутинной работы, позволяя
заниматься им вместо нее аналитической деятельностью.
С точки зрения архитектуры, в качестве развития системы могу предложить перевести приложение на web-ориентированную трехзвенную архитектуру с распределенными вычислениями. В качестве клиента будет выступать
браузер. Такой подход избавит пользователя от необходимости установки программы на локальный компьютер. Вторым уровнем будет сервер приложений,
который будет принимать на входе сигнал для анализа, и распределять вычисления между вычислительными серверами, которые будут играть роль третьего
звена. Также не лишним будет добавить сервер базы данных, используемый
только как хранилище результатов и организовать смежный с этим сервис «Отправить преподавателю на проверку», целевая функция которого ясна из названия.
Гибкость и настраиваемость системы дает широкие перспективы развития функциональности системы. Например, для реализации нового представления сигнала, требуется лишь добавить соответствующий программный модуль
и подключить его в систему визуализации.
43
3.2.
Основные технические решения проекта системы
3.2.1. Описание организации информационной базы
В силу того, что наличие базы данных подразумевает наличие администратора базы данных, входные файлы хранятся на внешнем носителе, а также
тот факт, что структура выходных данных довольно тривиальна, было решено, в
данном приложении базу данных не использовать.
3.2.2. Описание системы программного обеспечения
Концепция данного программного изделия такова, что система является
Windows-ориентированной, т.е. будет корректно работать на любой платформе,
операционной системой которой является Windows. К специальному программному обеспечению требуется наличие установленной виртуальной машины .Net Framework 4.0. В настоящее время имеется реализация виртуальной
машины .Net Framework 4.0 под семейство операционных систем Unix, называемое Mono. Поэтому данное приложение будет успешно работать на unixподобных системах, с условием наличия виртуальной машины Mono.
Также желательно, но необязательно, иметь Microsoft Visual Studio 2010
версии Professional или выше для изменения поведения алгоритмов самой системы.
44
3.3.
Разработка программного модуля «Визуализация цифрового речевого
сигнала»
3.3.1. Характеристика задачи
Для быстрого подбора требуемого отсчета, необходимо иметь под рукой
полную информацию о сигнале. Вся информация о сигнале должна отображаться в одном месте и целесообразнее отображать ее в виде представлений
сигнала: дискретное, спектральное, автокорреляционное. Таким образом, данная задача распадается на подзадачи: получение Фурье-изображения сигнала,
получение спектрограммы по имеющемуся Фурье-изображению сигнала, получение коэффициента автокорреляции, получение коррелограммы. Структурная
схема представлена на рисунке 3.2.
Реализация данной задачи связана с задачей построения графиков по
имеющемуся сигналу. Так как две последующие задачи реализуются на основе
результатов полученных в данной задаче.
Решение данной задачи прекращается при отсутствии компьютеров. При
прекращении решения данной задачи, задачи построение графиков по имеющимся сигналам также прекращаются.
3.3.2. Исходные данные
Входной информацией является файл. Первые 2 байта это частота дискретизации, далее по 1 байту значение амплитуды в конкретном отсчете. Структура файла приведена на рисунке 3.3.
45
Рисунок 3.2
Рисунок 3.3
3.3.3. Выходная информация
Выходной информацией являются двумерные массивы, содержащие данные для представлений сигнала: дискретное, спектральное, автокорреляционное.
46
3.3.4. Математическая постановка задачи
Входной файл можно представить в виде множества:
(3.1)
где X – входной файл;
Fдискр – это частота дискретизации;
А – амплитуда соответствующего отсчета;
i – номер байта.
Необходимо применять «сырой» метод чтения файла. Первые 2 байта образуют частоту дискретизации, а далее по одному байту амплитуды в соответствующем отсчете.
3.3.5. Описание алгоритма получения Фурье-изображения сигнала
3.3.5.1.
Назначение и характеристика алгоритма
Алгоритм предназначен получения дискретного сигнала в частотной области, которое определяется с помощью преобразования Фурье.
3.3.5.2.
Используемая информация
При решении задачи используются данные, считанные из файла: частота
дискретизации и массив амплитуд отсчетов.
47
3.3.5.3.
Результаты решения
В результате решения данного алгоритма входной сигнал будет преобразован в дискретный сигнал в частотной области.
3.3.5.4.
Математическое описание
Дискретное преобразование Фурье для вектора
, состоящего из N эле-
ментов, имеет вид[4]:
(3.2)
элементы матрицы
имеют вид[4]:
(3.3)
Пусть N четно, тогда ДПФ можно переписать следующим образом[2][4]:
(3.4)
Коэффициенты
и
можно переписать следующим образом
(M=N/2):
(3.5)
(3.6)
48
В результате получается:
(3.7)
Таким образом, дискретное преобразование Фурье от вектора, состоящего
из N отсчетов, свелось к линейной композиции двух ДПФ от N/2 отсчетов. Если
для первоначальной задачи требовалось N2 операций, то для полученной композиции 𝑁 2 ⁄2. Если M является степенью двух, то это разделение можно продолжать рекурсивно до тех пор, пока не останется два точечных преобразования Фурье, которое вычисляется по следующим формулам[2][3][6]:
(3.8)
3.3.5.5.
Алгоритм решения
На вход алгоритма массив данных для преобразования. Алгоритм представлен на рисунке 3.4.
3.3.6. Описание алгоритма получения спектрограммы
3.3.6.1.
Функциональное назначение
Алгоритм предназначен для получения изображения, показывающего зависимость спектральной плотности мощности сигнала от времени, т.е. спектрограммы.
49
Алгоритм получения Фурье-изображения сигнала
Начало
A
N = arr.length
int k = 0;
Да
Нет
Нет
k<N/2
N>1
Да
Result := arr[1];
В
Да
Нет
isPower2(N)
Переписать
четные элементы в
массив odd
Подсчитать
значение Фурьеизображения в
точке k
Выдать
сообщение об
ошибке
k++
В
q = fft(odd);
Переписать
нечетные
элементы в массив
odd
Result = y
В
Конец
r = fft(odd)
A
Рисунок 3.4
3.3.6.2.
Описание информации
В качестве входных данных спектрограмма использует кусочки Фурьеизображений, вычисленных на ограниченном участке.
50
3.3.6.3.
Результат решения
В результате решения данного алгоритма будет отображено спектральное
представление сигнала. Вся результирующая информация для отображения
спектрограммы хранится в двумерном массиве.
3.3.6.4.
Математическое описание
Спектрограмма описывается формулой[4]:
(3.9)
где F(m,w) – значение отсчета;
f[n] – значение функции в отсчете n;
w[…] – значение Фурье-изображения.
3.3.6.5.
Алгоритм решения
На входе процедура принимает массив, представляющий собой входной
файл. После обработки заполняется матрица spectr. Результат работы представлен на рисунке 3.5.
3.3.7. Описание алгоритма получения коэффициентов автокорреляции
3.3.7.1.
Назначение и характеристика алгоритма
Алгоритм предназначен для получения коэффициентов автокорреляции с
целью определения повторяющихся участков и несущей частоты сигнала.
51
Алгоритм получения Фурье-изображения сигнала
Начало
A
Data[].re = d;
Data[].im = 0;
x = 0;
shiftRange =
settings.getShiftRange
();
Range_size =
settings.getRangeValu
es();
x < range_size
Нет
Да
В ячейку Spectr[j][x]
записать энергию
сигнала
j = 0;
N = d.length
Нет
B
j<N
х++
C
Да
Temp = data[j] ..
data[Range_size];
j++
Temp = fft(temp);
B
С
Конец
A
Рисунок 3.5
52
3.3.7.2.
Исходные данные
При решении задачи используются данные, считанные из файла: частота
дискретизации и массив амплитуд отсчетов.
3.3.7.3.
Результаты расчета
В результате решения будет получен автокорреляционный коэффициент
на основании текущего обрабатываемого отчета и значения сдвига интервала
анализа.
3.3.7.4.
Математическое описание
В обработке сигналов автокорреляционная функция (АКФ) определяется
интегралом[4][5][6]:
Ψ(𝑡) = ∫ 𝑓(𝑡)𝑓(𝑡 − 𝜏)𝑑𝑡
(3.10)
В случае же, когда обрабатывается дискретный сигнал, необходимо знак
интеграла сменить знаком суммы[4][5][6]:
Ψ(𝑡) = ∑ 𝑓(𝑡)𝑓(𝑡 − 𝜏)
(3.11)
где Ψ(𝑡) – значение коэффициента автокорреляции в момент времени t;
f(t) – значение функции в момент времени t;
𝜏 – смещение.
53
3.3.7.5.
Алгоритм решения
На вход подаются: значение текущего обрабатываемого отчета, у – значение сдвига отчета относительно текущего, d – массив для анализа, входной сигнал. Алгоритм представлен на рисунке 3.6
3.3.8. Описание алгоритма получения автокоррелограммы
3.3.8.1.
Назначение и характеристика алгоритма
Алгоритм предназначен для получения изображения, показывающего статистическую взаимосвязь между двумя отчетами одно ряда, смещенными на
некоторую величину, т.е. коррелограммы.
3.3.8.2.
Используемая информация
В качестве входных данных автокоррелограмма использует кусочки автокорреляции, вычисленных на ограниченном участке с некоторым смещением.
3.3.8.3.
Результаты решения
В результате решения данного алгоритма будет отображено спектральное
представление сигнала. Вся результирующая информация для отображения
спектрограммы хранится в двумерном массиве.
54
Алгоритм получения коэффициента автокорреляции
Начало
Sum = 0;
Range_size =
settings.getRangeValu
es();
M = 0;
M < Range_Size –
1-y
Да
Sum += d[x + m] * d[x
+ m + y]
M++
Result = sum
Конец
Рисунок 3.6
Нет
55
3.3.8.4.
Математическое описание
Автокоррелограмма строится на основании формулы[4][6]:
(3.12)
3.3.8.5.
Алгоритм решения
Во время выполнения процедуры идет заполнение глобального, на уровне
класса, двумерного массива akf. Элементы по ширине – это номера отсчетов,
элементы по высоте – это смещение относительно текущего отсчета. Значение
элемента матрицы - интенсивность автокоррелограммы в точке. Алгоритм приведен на рисунке 3.7.
3.3.9. Описание контрольного примера визуализации цифрового сигнала
3.3.9.1.
Назначение и характеристика алгоритма
С помощью данного контрольного примера необходимо проверить работу
инструментов визуализации цифрового речевого сигнала.
3.3.9.2.
Исходные данные
В качестве исходных данных выступает файл, структура файла описана в
пункте 3.3.2.
56
Алгоритм получения автокоррелограммы
Начало
A
Получить значение
сдвига интервала
анализа
j < akf[i].length
C
Нет
Конец
Да
akf[I,j] = avkt(data, I,
j);
I = 0;
Нет
B
I < akf.length
C
j ++
Да
j = 0;
i++
A
B
Рисунок 3.7
3.3.9.3.
Результаты расчета
В результате работы программы должны отобразить три представления
сигнала: аналоговое, спектральное и автокорреляционное.
57
3.3.9.4.
Результаты испытания программы визуализации на контрольном
примере
В результате работы программы получено три представления сигнала:
аналоговое, спектральное и автокорреляционное. Результат представлен на рисунке 3.8
Рисунок 3.8
Как видно из тестирования программы были построены представления
сигнала: дискретное, спектральное, и автокорреляционное. Результат работы
программы совпал с ожиданием. Так как остальные сигналы обрабатываются
по этому же алгоритму, можно утверждать, что алгоритм модуля «Визуализация цифрового речевого сигнала» реализован верно.
58
3.4.
Разработка программного модуля «Сегментация цифрового сигнала»
3.4.1. Характеристика задачи
Сегментация цифрового сигнала подбором «на глаз» довольно долгий
процесс и в случае неправильного выбора отсчета требует выполнения данной
процедуры снова. С использованием данной системы сегментация сигнала выполняется за один клик «мыши».
Таким образом, автоматизация процесса сегментации очень полезна, так
как позволяет сэкономить время сегментирования сигнала.
Решение данной задачи невозможно в отсутствии загруженного и обработанного файла в систему.
3.4.2. Входная информация
Входной информацией для решения данной задачи являются координаты
мыши в момент клика.
3.4.3. Выходная информация
Результатом решения является сохранение входных данных во внутреннюю переменную и отображение маркера на графике.
3.4.4. Математическая постановка задачи
Необходимо преобразовывать координаты мыши из внешних координат во
внутренние. Для этого воспользуемся формулой нормализации:
𝑟𝑒𝑠𝑢𝑙𝑡 =
𝑥 − 𝑚𝑖𝑛
× (𝑏 − 𝑎) + 𝑎
max − 𝑚𝑖𝑛
(3.13)
59
где result – итоговое нормированное значение;
x – входной параметр для нормализации;
min – это минимальное значение внешних координат;
max – это максимальное значение внешних координат;
a – это минимальное и максимальное значение внутренних координат;
b – это максимальное значение внутренних координат.
Далее, используя этот результат, можно установить маркер на требуемом
месте панели графика.
3.4.5. Алгоритм решения
При создании объекта отображения аналогового, спектрального или автокорреляционного представления регистрируется ссылка на объект-посредник. В
объекте-посреднике регистрируются ссылки на эти создаваемые объекты. При
клике на одном из представлений создается объект маркер в этом представлении. Для того, чтобы создать аналогичные объекты-маркеры в остальных представлениях, необходимо вызывать процедуру установки этих маркеров, находящуюся в объекте-посреднике.
1.
Начало;
2.
Нормализовать входные параметры в соответствии с внутренними
координатами панели;
3.
Вызывать процедуру установки маркера для текущей панели;
4.
Добавить полученные координаты во внутреннюю коллекцию мар-
керов;
5.
Вызвать процедуру установки маркеров из объекта-посредника;
6.
Обновить панели с представлениями сигнала;
60
7.
Конец.
3.4.6. Описание контрольного примера
3.4.6.1.
Назначение контрольного примера
В контрольном примере необходимо проверить правильность работы
программы для проведения сегментации сигнала.
3.4.6.2.
Входные данные
В качестве исходных данных выступают координаты мыши в момент
клика.
3.4.6.3.
Результаты расчета
В результате работы программы должен получиться сегментированный
сигнал.
3.4.6.4.
Результаты испытания программы
Результат работы программы представлен на рисунке 3.9. Результат работы программы совпал с ожиданием. Сигнал был сегментирован по тем отсчетам,
которые указал оператор. Отсюда следует, что модуль сегментации речевого
сигнала работает верно.
61
Результат сегментации речевого сигнала
Рисунок 3.9
3.5.
Разработка программного модуля «Сохранение результатов работы в
файл»
3.5.1. Характеристика задачи
Так как сегментация не является конечной целью обработки сигналов,
необходимо сохранить результаты работы во внешний файл, для того, чтобы
автоматизировать процесс получения требуемых выборок.
Автоматизация данной задачи сэкономит время на обработку сигналов,
так как отсутствует необходимость переписывать результаты работы вручную на
62
листок бумаги с последующим занесением вручную результатов работы системы в систему обработки цифровых сигналов.
3.5.2. Входная информация
Входной информацией является внутренняя коллекция, хранящая результаты работы пользователя.
3.5.3. Выходная информация
Выходной информацией является xml-файл. Данный тип был выбран в
связи с тем, что формат файла очень удобен для создания и обработки документов программами и одновременно удобен для создания, чтения и правки документов оператором.
Выходной файл содержит информацию о проставленных маркерах и
комментариев к ним. Если при формировании файла будет обнаружена ошибка,
то пользователю выведется сообщение об этом. Пример выходного файла представлен на рисунке 3.10.
3.5.4. Математическая постановка задачи
Имеется коллекция, хранящая результаты работы пользователя А. Необходимо составить новое множество В элементы, которого состоят из элементов
исходного множества А.
А = {al,a2, ...,an},
(3.14)
В = {al,a2, ...,an}
(3.15)
где А – исходное множество, коллекция, хранящая результаты работы
пользователя;
63
а – элементы коллекции А;
n – количество элементов;
В – результирующе множество, представляющее собой выходной файл.
Пример выходного файла
Рис. 3.10
3.5.5. Алгоритм решения
Во время реализации алгоритма берется коллекция данных, отвечающая
за результаты работы. Последовательно считываемы данные из коллекции, переписываются в файл. В случае отсутствия ошибок вернуть true, false – если
произошли какие-то ошибки работы с файлами.
64
Алгоритм:
1.
начало;
2.
открыть файл, если существует, если не существует, то создать его;
3.
i = 0;
4.
если i < размера входной коллекции, то перейти к шагу 5, иначе к
шагу 10;
5.
считать i-ый элемент из входной коллекции;
6.
записать считанный элемент в выходной файл;
7.
если произошла ошибка, вернуть false. Перейти к шагу 11;
8.
увеличить i на единицу;
9.
перейти к шагу 4;
10.
вернуть true;
11.
конец.
3.5.6. Описание контрольного примера
3.5.6.1.
Назначение контрольного примера
Контрольный пример предназначен для проверки правильности сохранения результатов работы в файл.
3.5.6.2.
Исходные данные
Исходными данными является коллекция результатов. Предлагается содержимое коллекции:
0
1435 Буква "Ч"
1
2042
2
4909 Звук "Ы"
65
3
3.5.6.3.
3864 Сегмент-2
Результаты расчета
В результате программа формируется файл, содержащей результаты работы пользователя. Содержимое сформированного файла:
<?xml version="1.6" encoding="UTF-8"
<root>
<fileName>file1.dat</fi1eName>
<marker>
<no>6</no>
<mark>1435</mark>
<labe1>Буква "Ч"</label)
</marker>
<marker>
<no>1</no>
<mark>2643</mark>
</marker>
<marker>
<no>2</no>
<mark>4969</mark>
<label>Звук "Ы"</labe1>
</marker>
<marker>
<no>3</no>
<mark>3864</mark>
<1abe1>Сегмент-2</1abel>
</marker>
</root>
3.5.6.4.
Результаты испытания программы
Результат работы программы совпал с ожиданием. Сигнал был сегментирован по тем отсчетам, которые указал оператор. Отсюда следует, что модуль
сохранения результатов работы в файл работает верно.
66
4.
АПРОБАЦИЯ СИСТЕМЫ
В качестве апробации для разработанной системы с помощью отдела интеллектуальной собственности ИжГТУ подана заявка на государственную регистрацию программы для ЭВМ. Держатель патента ФГБОУ ВПО Ижевский государственный технический университет имени М.Т. Калашникова
67
5.
5.1.
ПРОВЕДЕНИЕ ЭКСПЕРИМЕНТА
Гипотеза
Выдвигается предположение о том, что использование инструмента ав-
томатизации сегментации цифрового речевого сигнала позволяет ускорить
процесс сегментации как минимум в 10 раз. Другими словами, ручная сегментация в 10 раз медленнее, сегментации с использованием инструмента. Также
выдвигается предположение, что при помощи инструмента сегментации можно
сократить процент ошибок как минимум в 10 раз.
5.2.
Постановка задачи
На вход подается звуковой файл, в котором хранится фраза «ЧЕТЫРЕ».
Оператору предлагается выделить отсчеты, которые являются началом каждой
из букв входного сигнала.
5.3.
Описание эксперимента
В ходе эксперимента предлагается оценить преимущество использование
инструмента автоматизации сегментации цифрового речевого сигнала по сравнению с ручной сегментацией.
Входной сигнал, как отмечалось в п. 3.3.2, представляет собой массив
байт, поэтому для того, чтобы провести ручную сегментацию необходимо
написать программу, которая выгружает данные из входного файла в файл
*.xls. Для того чтобы анализировать полученный массив данных необходимо
воспользоваться функцией генерации графиков линейной функции, которая доступна в Microsoft Excel. Полученный график функции подвергается визуальному анализу, и, на основании этого, выделяются наиболее отсчеты, которые,
68
по мнению оператора, могут являться границами фонем, слов, фраз или других
интересующих разделов.
В ходе эксперимента будет оцениваться скорость поиска требуемого отсчета, точность определения требуемого отсчета, а также создание, на основе
проведенного анализа, выходного файла, который будет удобен для использования программами обработки цифровых речевых сигналов.
Каждому оператору вначале предлагается начать с ручной сегментации,
чтобы не иметь предварительной информации о точном месте положения маркеров. Далее оператор решает поставленную задачу при помощи автоматизированной системы сегментации речевого сигнала. Для проведения ручной сегментации операторам был предоставлен исходный код для формирования выходного файла, для анализа его при помощи табличного процессора Microsoft Excel.
Также каждому оператору было предоставлено руководство оператора для
пользования системой (см. Приложение Б). От каждого оператора требовалось
получить два xml-файла: один из них соответствует результату работы ручной
сегментации сигнала, второй – результат автоматической сегментации цифрового речевого сигнала. На основании этих данных делается вывод о точности
сегментации файла.
В качестве определения ошибки был использован следующий алгоритм:
Имеется эталонный xml-файл. Все результирующие файлы сравниваются с эталонным файлом. В случае если оператор промахнулся на более чем 10 отсчетов,
то попытка считается неудачной. В противном случае, значение ошибки присваивается в соответствии с отклонением. Всего нужно найти шесть отсчетов,
которые являются начальными отсчетами. Если попытка считается неудачной,
то ошибка присваивается равной 16.7%.
69
5.4.
Результаты эксперимента
В эксперименте принимали участие 5 операторов. Результаты экспери-
мента представлены в таблице 1.
Таблица 1
Сегментация с использованием системы
Ручная сегментация
Время
создания
Номер
оператора
Время
сег-
ментации, c
графиОшибка, %
ков при
помощи
MS
Время,
по-
траченное на
сегментацию, с
Время
создания
Общее
выходно-
время,
го файла, с
Ошибка, %
с
Excel, c
0
48
3
7
603
176
786
33,4
1
40
5
9
537
150
696
42,4
2
51
0
8
655
162
825
50,1
3
55
2
10
700
213
923
62,8
4
44
7
9
750
193
952
84,2
После проведения эксперимента пользователи отметили, что сигнал проще сегментировать при наличии нескольких его представлений, при ручной
сегментации операторы имели в своем распоряжении только дискретное представление сигнала.
5.5.
Вывод
На основании полученных данных можно заключить, что при использо-
вании инструмента автоматической сегментации, в среднем, можно сэкономить
в 17,6 раз больше времени, что примерно в полтора раза больше, чем было выдвинуто в гипотезе. Также процент допущенных ошибок падает в 13,1 раз, что
также превышает изначально предполагаемый в гипотезе уровень. Следова-
70
тельно, выдвинутая гипотеза полностью подтверждена, и инструмент прекрасно справляется со своими обязанностями.
71
ЗАКЛЮЧЕНИЕ
В ходе проделанной работы была достигнута цель, преследующая создание автоматизированной системы сегментации цифрового сигнала.
Для достижения цели задача номер 1, требующая создания визуализации
различных представлений сигнала, таких как: дискретное, спектральное, автокорреляционное, была решена созданием настольного приложения для платформы Windows. При построении спектрального представления использовался
метод быстрого преобразования Фурье, при построении автокорреляционного
представления использовался подход формирования автокорреляционной
функции.
Для решения задачи, требующей сегментации сигнала посредством манипулятора «мышь», в приложение была встроена поддержка манипулятора
«мышь» PS/2 и USB 2.0.
Для того чтобы решать задачу выгрузки результатов работы в файл в систему была встроена функция автоматической генерации XML-документа, хранящего информацию о номере маркера, номера отсчета, а также комментария к
маркеру, если пользователь указал его. Функция реализована с помощью расширения языка C# LINQ to XML.
Для оценки полезности разработанной системы был проведен эксперимент с привлечением посторонних людей по оптимизации времени и процента
допускаемых ошибок операторами при выполнении операции сегментации
цифрового речевого сигнала. В результате была доказана гипотеза о том, что
инструмент действительно позволяет быстро добиться поставленных задач при
ничтожном проценте ошибок. Каждый оператор отметил удобство и простоту
обращения с приложением.
72
Данную систему можно использовать для первичного анализа и сегментации цифрового речевого сигнала. Она предназначена для проведения научных исследований, а также лабораторных и практических работ по дисциплине
теории цифровой обработки сигнала и смежных с ней. С помощью данной удалось автоматизировать процесс сегментации цифрового речевого сигнала
Система будет необходима научным сотрудникам, заинтересованных в
проведении научных исследований, а также преподавателям и студентам для
проведения лабораторных и практических работ. Продукт заинтересует вузы и
кафедры, изучающие теорию цифровой обработки сигналов, так как он использует открытые технологии, а, следовательно, не нужно думать о приобретении
лицензии. Тем не менее, имеется достаточный набор инструментов для анализа
и сегментации цифрового речевого сигнала.
В будущем есть возможность улучшить систему путем пересмотра архитектуры приложения, либо добавить новые модули визуализации цифрового
речевого сигнала.
73
СПИСОК ЛИТЕРАТУРЫ
1. Аграновский А.В., Леднов Д.А. Теоретические аспекты алгоритмов обработки и классификации речевых сигналов. – М.: Издательство «Радио и связь»,
2004.
2. Рабинер Л.Р., Шафер Р.В. Цифровая обработка речевых сигналов: Пер. с
англ. /Под ред. М.В. Назарова и Ю.Н. Прохорова. – М.: Радио и связь, 1981.
3. Солонина А.И., Улахович Д.А., Арбузов С.М., Соловьева Е.Б. Основы
цифровой обработки сигналов: Курс лекций. Изд. 2-е испр. и перераб. – СПб.:
БХВ-Петербург, 2005.
4. Баскаков С.И. Радиотехнические цепи и сигналы – 2-е изд., перераб. и
доп. – М.: Высшая школа, 1988.
5. Оппенгейм А. В., Шафер Р.В. Цифровая обработка сигналов. – М.: Связь,
1979.
6. Рабинер Л., Гоулд Б. Теория и применение цифровой обработки сигналов.
– М.: Мир, 1978.
74
ПРИЛОЖЕНИЕ А
ТЕСТЫ И РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ
П. 1.1. Текст класса MainWindow.cs
using System;
using System.Collections;
using System.Threading;
using System.Windows;
using System.Windows.Input;
using ChartControlLibrary.utils;
using Microsoft.Win32;
using View.settings;
using View.view;
using System.Windows.Controls;
using ControlLibrary;
namespace View
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
75
public partial class MainWindow : Window
{
private ArrayList list = new ArrayList();
public MainWindow()
{
InitializeComponent();
}
/// <summary>
/// Открыть файл
/// </summary>
/// <param name="sender">отправитель</param>
/// <param name="e">событие</param>
private void OpenFileClick(object sender, RoutedEventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Media files (*.dat)|*.dat|All files (*.*)|*.*";
dlg.RestoreDirectory = true;
// Display OpenFileDialog by calling ShowDialog method
var result = dlg.ShowDialog();
// Get the selected file name and display in a TextBox
if ((result == true) && (tabControl != null))
76
{
try
{
ViewSettings vs = new ViewSettings();
ShowDialog(vs);
string path = dlg.FileName;
string
fileName
dlg.FileName.Substring(dlg.FileName.LastIndexOf('\\') + 1);
var dw = new DiscreteView(path);
AutocorrelationView ac = new AutocorrelationView(path, vs);
Thread ta = new Thread(ac.createDataset);
ta.Start();
SpectrumView sv = new SpectrumView(path, vs);
Thread ts = new Thread(sv.createDataset);
ts.Start();
Mediator med = new Mediator();
list.Add(med);
ta.Join();
ts.Join();
=
77
TabItem item = new CustomTabItem(dw.getY(), sv.Colors,
ac.Colors, med);
item.Header = fileName;
tabControl.Items.Add(item);
tabControl.SelectedItem = item;
fileList.Items.Add(fileName);
}
catch (OutOfMemoryException)
{
Console.WriteLine("Недостаточно памяти для продолжения
работы");
}
}
}
private void ShowDialog(ViewSettings vs)
{
var dialog = new SettingsDialog(vs);
dialog.ShowDialog();
}
78
private void SaveMarkers(object sender, RoutedEventArgs e)
{
int index = tabControl.SelectedIndex;
if (index != -1)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "Markers |*.mrk";
saveFileDialog1.Title = "Сохранить файл с маркерами";
saveFileDialog1.ShowDialog();
// Если выбран файл, то открыть его на запись.
if (saveFileDialog1.FileName != "")
{
// Сохранить файл с маркерами используя filestream
using
(System.IO.StreamWriter
file
=
tem.IO.StreamWriter(saveFileDialog1.OpenFile()))
{
file.WriteLine("Номер\tОтсчет");
int i = 0;
foreach (Int32 mark in ((Mediator)list[index]).List)
{
file.WriteLine("{0}\t{1}", i, mark);
new
Sys-
79
i++;
}
}
}
}
}
/// <summary>
/// Закрыть приложение
/// </summary>
/// <param name="sender">отправитель</param>
/// <param name="e">событие</param>
private void CloseAppClick(object sender, RoutedEventArgs e)
{
Close();
}
/// <summary>
/// закрыть выбранный файл
/// </summary>
/// <param name="sender">отправитель</param>
/// <param name="e">событие</param>
80
private void CloseFileClick(object sender, RoutedEventArgs e)
{
if (fileList.SelectedIndex != -1)
{
tabControl.Items.RemoveAt(fileList.SelectedIndex);
fileList.Items.Remove(fileList.SelectedItem);
}
}
/// <summary>
/// Выбрать вкладку по элементу из списка, либо закрыть, если нажата клавиша shift
/// </summary>
/// <param name="sender">отправитель</param>
/// <param name="e">событие</param>
private void SelectTab(object sender, MouseButtonEventArgs e)
{
// если нажата клавиша шифт, закрыть файл
if
(Keyboard.IsKeyDown(Key.LeftShift)
board.IsKeyDown(Key.RightShift))
{
CloseFileClick(sender, e);
||
Key-
81
}
// иначе выбрать вкладку из списка
else
{
tabControl.SelectedIndex = fileList.SelectedIndex;
}
}
}
}
<Window x:Class="View.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Система сегментации речевого сигнала"
Height="600"
Width="800"
Icon="/SegmentSignal;component/Images/head.jpg" >
<DockPanel>
<Menu DockPanel.Dock="Top" HorizontalAlignment="Stretch" VerticalAlignment="Top" Foreground="Black">
<MenuItem Margin="0,0,10,0" Header="Файл">
<MenuItem
er="Открыть">
Name="open"
Foreground="Black"
Head-
82
<MenuItem Name="mnOpenProject" Foreground="Black" Header="Открыть проект..."></MenuItem>
<MenuItem
Name="mnOpenFile"
Foreground="Black"
Header="Открыть файл..."></MenuItem>
</MenuItem>
<MenuItem
Name="closeApp"
Foreground="Black"
Header="Выход" Click="CloseAppClick" />
</MenuItem>
<MenuItem Margin="0,0,10,0" Header="Справка">
<MenuItem Foreground="Black" Header="О программе" />
</MenuItem>
</Menu>
<TabControl DockPanel.Dock="Left" Width="150">
<TabItem Header="Файлы">
<DockPanel Background="#FFE5E5E5">
<ToolBar DockPanel.Dock="Top" >
<Button Click="OpenFileClick">
<Image
x:Name="image"
Height="24"
Source="Images\aip_new.ico" ToolTip="открыть файл" />
</Button>
<Button Click="CloseFileClick">
Width="24"
83
<Image
x:Name="image1"
Height="24"
Width="24"
Source="Images\aip_delete.ico" ToolTip="закрыть файл" />
</Button>
<Button Click="SaveMarkers" >
<Image
x:Name="image2"
Height="24"
Width="24"
Source="Images\aip_save.ico" ToolTip="Сохранить маркеры" />
</Button>
</ToolBar>
<ListView
Name="fileList"
bleClick="SelectTab" SelectionMode="Single">
</ListView>
</DockPanel>
</TabItem>
</TabControl>
<TabControl Name="tabControl">
</TabControl>
</DockPanel>
</Window>
П.1.2. Текст класса FourierTransform.cs
using System;
using MathNet.Numerics.IntegralTransforms;
using View.utils;
MouseDou-
84
namespace View.Fourier
{
class FourierTransform
{
public static Complex[] Fft(Complex[] x)
{
var n = x.Length;
if (n == 1)
{
return new Complex[] { x[0] };
}
if (!Utils.isPowerOf2(n))
{
throw new ArgumentOutOfRangeException(string.Format("Длина
массива не является степенью двойки"));
}
var even = new Complex[n / 2];
for (var k = 0; k < n / 2; k++)
{
even[k] = x[2 * k];
}
85
var q = Fft(even);
// нечетные элементы
var odd = even; // используем тот же самый массив
for (int k = 0; k < n / 2; k++)
{
odd[k] = x[2 * k + 1];
}
var r = Fft(odd);
// combine
var y = new Complex[n];
for (int k = 0; k < n / 2; k++)
{
var kth = -2 * k * Math.PI / n;
var wk = new Complex(Math.Cos(kth), Math.Sin(kth));
y[k] = q[k].Plus(wk.Times(r[k]));
//
y[k] = q[k] + (wk * r[k]);
y[k + n / 2] = q[k].Minus(wk.Times(r[k]));
//
y[k + n / 2] = q[k] - (wk * r[k]);
}
return y;
}
86
public static void FF(System.Numerics.Complex[] x)
{
Transform.FourierForward(x, FourierOptions.Default);
}
}
}
П. 1.3. Текст класса AutocorrelationView.cs
using System;
using System.Linq;
using View.settings;
using View.signalType;
namespace View.view
{
public sealed class AutocorrelationView : AbstractSignal
{
private float[][] _akf;
private ushort[][] _colors;
public ushort[][] Colors
87
{
get
{
if (_colors == null)
{
createDataset();
}
return _colors;
}
}
private readonly int _count;
private readonly int _rangeSize;
private readonly int _shiftRange;
public AutocorrelationView(string filePath, ViewSettings vs)
: base(filePath)
{
_rangeSize = vs.SizeAKF;
_count = getSize();
_shiftRange = vs.OverlayAKF;
88
}
public override void createDataset()
{
FillMatrix();
}
private void FillMatrix()
{
_akf = new float[_count][];
_colors = new ushort[_count][];
int l = _rangeSize - _rangeSize/2 - _shiftRange/2;
float min = float.MaxValue;
float max = float.MinValue;
short[] d = getData();
short[] data = new short[_count + _rangeSize];
int k = _rangeSize - _rangeSize / 2 - _shiftRange / 2;
Array.Copy(Enumerable.Repeat((short)0, k).ToArray(), 0, data, 0, k);
Array.Copy(d.Select(a => a).ToArray(), 0, data, k, d.Length);
int countNeed = data.Length - k - d.Length;
Array.Copy(Enumerable.Repeat((short)0, countNeed).ToArray(), 0, data, data.Length - countNeed, countNeed);
89
for (int i = 0; i < _akf.Length; i += _shiftRange)
{
_akf[i] = new float[_rangeSize];
for (int j = 0; j < _akf[i].Length; j ++)
{
_akf[i][j] = (float) Avkr(i, j, data) / _rangeSize;
}
if (_akf[i].Min() < min)
{
min = _akf[i].Min();
}
if (_akf[i].Max() > max)
{
max = _akf[i].Max();
}
}
Console.WriteLine(min + "\tasdf\t" + max);
DoFill(min, max);
}
90
private void DoFill(float min, float max)
{
for (int i = 0; i < _akf.Length; i += _shiftRange)
{
_colors[i] = new ushort[_rangeSize];
for (int j = 0; j < _akf[i].Length; j ++)
{
_colors[i][j] = ColorOf(_akf[i][j], min, max, 0, 0xFF);
}
for (int k = 1; (k < _shiftRange) && (i + k < _colors.Length); k++)
{
_colors[i + k] = new ushort[_rangeSize];
Array.Copy(_colors[i], _colors[i + k], _colors[i].Length);
}
}
}
private int Avkr(int x, int y, short[] d)
{
int sum = 0;
91
for (int m = 0; (m < _rangeSize - 1 - y) && (x + m + y < d.Length);
m++)
{
sum += d[x + m] * d[x + m + y];
}
return sum;
}
private static ushort ColorOf(float x, double left, double right, ushort min,
ushort max)
{
return (ushort)((x - left) / (right - left) * (max - min) + min);
}
}
}
П. 1.4. Текст класса DiscreteView.cs
using System;
using View.signalType;
using View.utils;
92
namespace View.view
{
public class DiscreteView : AbstractSignal
{
/// <summary>
/// Датасет
/// </summary>
//private Dictionary<UInt32, UInt16> _dataset;
private short[] y;
public short[] getY()
{
//if (y == null)
//{
// createDataset();
//}
//return y;
return getData();
}
/// <summary>
93
/// Конструктор
/// </summary>
/// <param name="filePath">имя обрабатываемого файла</param>
public DiscreteView(string filePath)
: base(filePath)
{
}
/// <summary>
/// Создать датасет
/// </summary>
public override void createDataset()
{
}
}
}
П. 1.5. Текст класса SpectrumView.cs
using System;
using View.Fourier;
using View.settings;
94
using View.signalType;
using View.utils;
using System.Linq;
namespace View.view
{
public sealed class SpectrumView : AbstractSignal
{
#region Variables
/// <summary>
/// длина интервала анализа
/// </summary>
private readonly int _rangeSize;
/// <summary>
/// скорректированная длина интервала анализа
/// </summary>
private readonly int _rangeSizeCorr;
/// <summary>
95
/// Основная полоса частот ()
/// </summary>
private const int RateSize = 5000;
/// <summary>
/// количество элементов в файле
/// </summary>
private int _count;
/// <summary>
/// шаг интервала анализа
/// </summary>
private readonly int _shiftRange;
#endregion // Variables
#region Accessors
public float[][] Spectr { get; private set; }
private ushort[][] _colors;
private readonly ViewSettings _vs;
96
public ushort[][] Colors
{
get
{
if (_colors == null)
{
createDataset();
}
return _colors;
}
}
#endregion
#region Constructors
public SpectrumView(string fileName, ViewSettings vs)
: base(fileName)
{
_vs = vs;
_rangeSize = _vs.SizeFFT;
97
_rangeSizeCorr = Utils.nextPow2(_rangeSize);
_shiftRange = _vs.OverlayFFT;
}
#endregion // Constructors
#region Methods
public override void createDataset()
{
FillMatrix();
}
private void FillMatrix()
{
_count = getSize();
Spectr = new float[_count][];
_colors = new ushort[_count][];
short[] d = getData();
Complex[] data = new Complex[Utils.nextPow2(2 * _count +
_rangeSizeCorr)];
98
int i = _rangeSizeCorr - _rangeSizeCorr / 2 - _shiftRange / 2;
Array.Copy(Enumerable.Repeat(new Complex(0, 0), i).ToArray(), 0,
data, 0, i);
Array.Copy(d.Select(a => new Complex(a, 0)).ToArray(), 0, data, i,
d.Length);
int countNeed = data.Length - i - d.Length;
Array.Copy(Enumerable.Repeat(new
Complex(0,
0),
count-
Need).ToArray(), 0, data, data.Length - countNeed, countNeed);
double min = double.MaxValue;
double max = double.MinValue;
for (int j = 0, l = i; j < _count; j += _shiftRange, i += _shiftRange)
{
Spectr[j] = new float[_rangeSizeCorr / 2];
Complex[] temp = new Complex[_rangeSizeCorr];
Array.Copy(data, i - l, temp, 0, _rangeSizeCorr);
Complex[] temp1 = FourierTransform.Fft(temp);
int x;
for (x = 0; x < temp1.Length / 2; x++)
{
Spectr[j][x]
=
(float)Math.Sqrt(temp1[x].GetRe()
temp1[x].GetRe() + temp1[x].GetIm() * temp1[x].GetIm());
*
99
if
(_vs.TypeFFT.Equals(RenderingFFT.Logarithm))
логарифмический спектр
{
Spectr[j][x] = (float)(20 * Math.Log10(Spectr[j][x] + 0.1));
}
}
if (min > Spectr[j].Min())
{
min = Spectr[j].Min();
}
if (max < Spectr[j].Max())
{
max = Spectr[j].Max();
}
}
DoFill(min, max);
}
private void DoFill(double min, double max)
{
for (int i = 0; i < Spectr.Length; i+=_shiftRange)
{
//
100
_colors[i] = new ushort[_rangeSizeCorr / 2];
for (int j = 0; j < Spectr[i].Length; j ++)
{
_colors[i][j] = colorOf(Spectr[i][j], min, max, 0, 0xFF);
}
for (int k = 1; (k < _shiftRange) && (i + k < _colors.Length); k++)
{
_colors[i + k] = new ushort[RateSize];
Array.Copy(_colors[i], _colors[i + k], _colors[i].Length);
}
}
}
private ushort colorOf(double x, double left, double right, int min, int
max)
{
return (ushort)((x - left) / (right - left) * (max - min) + min);
}
#endregion // Methods
}
}
101
ПРИЛОЖЕНИЕ Б
РУКОВОДСТВО ОПЕРАТОРА ПО ПРОГРАММЕ
Б.1. Назначение программы
Программа система автоматизации сегментации речевого сигнала по типу
возбуждения реализует задачу автоматизации процесса сегментации цифровых
речевых сигналов. Программа предназначена для автоматизации работы студентов и преподавателей при выполнении лабораторных и практических работ.
В программе предусмотрено выполнение следующих функций:
1.
представление речевого сигнала как зависимости амплитуды от вре-
мени;
2.
представление речевого сигнала как зависимость амплитуды от час-
тоты по времени, т.е. получить спектр сигнала;
3.
представление автокорреляционной зависимости сигнала;
4.
сегментировать цифровой речевой сигнал;
5.
сохранение результатов работы в файл.
Б.2. Условия применения программы
При работе с программой необходимо обеспечить выполнение следующих требований к комплексу технических средств:
1.
персональная ЭВМ должна иметь процессор типа Intel Core 2duo 2.4
ГГц или аналогичную AMD модель;
2.
свободная оперативная память должна составлять не менее 1Гб, ре-
комендуемый объем оперативной памяти – 2Гб;
3.
жесткий
диск
должен
иметь
свободное
пространство
не
менее 30 Мб;
4.
для удобства работы необходимо иметь манипулятор типа «мышь»;
102
5.
интерфейс системы настроен на разрешение 1024х768, поэтому
необходимо наличие видеоадаптера поддерживающего данный режим.
6.
В качестве программных средств обязательно наличие виртуальной
машины .Net и набора библиотек .NetFramework версии 4 и выше.
Программа реализована в среде программирования Microsoft Visual Studio
2010 редакции Professional корпорации Microsoft.
Б.3. Пуск программы
Для того чтобы запустить систему «Автоматизированная система сегментации речевого сигнала по типу возбуждения», необходимо перейти в директорию с исполняемым файлом и двойным щелчком мыши по SegmentSignal.exe
запустить систему. Также данную систему можно запустить непосредственно
из командной строки, набрав: SegmentSignal.exe.
Б.4. Команды оператора
После запуска приложения появляется главное окно, представленное на
рис. Б.1.
Для того чтобы загрузить сигнал в систему необходимо выбрать «Файл»
пункт «Загрузить», либо можно воспользоваться панелью инструментов и
нажать на кнопку
. Также комбинация ctrl + O является комбинацией «горя-
чих» клавиш для загрузки сигнала в систему.
После этого появляется диалог (рис. Б.2.) с предложением изменить глобальные параметры. В случае утвердительного ответа появляется диалог редактирования глобальных параметров рис. Б.3. Также этот диалог можно вызвать,
выбрав «Настройки» пункт «Параметры», либо нажать на кнопку
на панели
инструментов, либо воспользоваться «горячими» клавишами и нажать ctrl + P.
103
Рис. Б.1
Рис. Б.2
Интерфейс полностью соответствует стандартам ОС Windows или Unixподобных систем, поэтому вся работа в подсистеме опирается на эргономику и
удобство использования, поэтому подсистема ориентирована на использование
манипулятора типа «мышь» PS/2 или USB 2.0, текстовые поля заполняются с
клавиатуры. Перемещение между полями осуществляется либо «мышью» либо
посредством нажатия клавиши «Tab», обратный ход по полям – «Shift-Tab».
104
Рис. Б.3
По окончанию редактирования необходимо нажать либо «Принять», если
необходимо сохранить внесенные изменения, либо «Отмена», если изменения
требуется отменить.
После редактирования глобальных настроек системы появляется окно
выбора файла с сигналом рис. Б.4. Здесь необходимо указать путь к файлу,
находящемуся на внешнем носителе и нажать кнопку «Open», если требуется
загрузить файл на обработку, либо «Cancel», если загружать файл не требуется.
В случае успешной обработки сигнала появляется сообщение рис. Б.5.
В случае ошибки обработки сигнала появляется диалог, представленный
на рис. Б.6. В этом случае необходимо обратиться к пункту Б.5. настоящего руководства для получения более подробного сведения об ошибке и возможных
путях ее устранения.
Результаты обработки сигнала представлены на рис. Б.7.
105
Рис. Б.4
Рис. Б.5
Рис. Б.6
106
Рис. Б.7
Для того чтобы установить маркер необходимо навести мышь на панель,
выбрать требуемые отсчет и кликнуть левой кнопкой мыши. Далее появляется
диалоговое окно, с предложением добавить метку к маркеру рис. Б.8. Результат
установки маркеров представлен на рис Б.9.
Также имеется скрывать некоторые представления сигнала, для сосредоточения работы только на некоторых из них, пример отображения только двух
представлений на рис. Б.10, пример отображения только одного представления
сигнала на рис. Б.11.
Для
выбора
отображаемых
представлений
нажать/отжать кнопку с названием представления сигнала.
необходимо
внизу
107
Рис. Б.8
Для сохранения результатов работы необходимо нажать на кнопку
на
панели инструментов, либо меню «Файл» пункт «Сохранить», либо, воспользовавшись «горячими» клавишами, нажать ctrl + S.
Рис. Б.9
После удачного сохранения результатов на внешний носитель пользователю будет предложено открыть директорию (рис. Б.12), содержащую файл с
результатами работы.
108
Рис. Б.10
Рис. Б.11
109
Рис. Б.12
Если пользователь хочет завершить работу с программой необходимо
выбрать пункт меню «Файл» пункт «Выход». Диалог завершения работы с программой представлен на рис. Б.13.
Рис. Б.13
Б.5. Сообщения оператору
Сообщения, генерируемые системой при работе, и необходимые действия
при их получении приведены в таблице Б.1.
Таблица Б.1.
Сообщение
Описание
Действия при получении
сообщения
1
2
3
Хотите указать настрой- Пользователь пытается
ки для построения спек- загрузить сигнал на обтра?
работку, система предлагает настроить параметры обработки этого сигнала
Нажать
«Yes»,
если
пользователь
желает
внести изменения в глобальные параметры обработки, «No» в противном случае.
Сигнал успешно обрабо- Сигнал,
загруженный Нажать «ОК»
тан
пользователем на обработку, был успешно обработан.
110
Продолжение таблицы Б.1.
1
2
3
Сигнал не может
быть обработан.
Не хватает оперативной памяти
для завершения
операции
Попытка загрузить
Перезапустить систему либо, есслишком большой сигли не помогает, увеличить объем
нал, приложение израсоперативной памяти.
ходовало всю доступную
память.
Файл с результатами сохранен в
dir. Открыть папку с файлом?
Пользователь успешно
сохранил данные на
внешний носитель
Нажать «Yes», если пользователь
желает открыть директорию, содержащую результирующий
файл, «No» в противном случае.
Нет данных для
сохранения
Пользователь желает
сохранить несуществующие данные в файл.
Вероятно, ни один из
файлов не загружен в
систему для обработки
Загрузить файл на обработку
Ошибка открыФайл для сохранения не
тия файла для со- создан либо не сущехранения данных ствует
Перезапустить систему
Файл для сохранения данных не
найден
Перезапустить систему
Файл для сохранения
результатов работы не
найден либо не существует
Кодировка соФайл для сохранения
хранения файла
результатов имеет нене поддерживает- поддерживаемую кодися
ровку данной системой
Перезапустить систему
Ошибка сохранения данных в
файл
Перезапустить систему
Неизвестная ошибка,
возникшая при сохранении данных в файл
Download