Курсовая работа на тему: "Разработка алгоритма диаризации"
У нас на сайте представлено огромное количество информации, которая сможет помочь Вам в написании необходимой учебной работы.
Но если вдруг:
Вам нужна качественная учебная работа (контрольная, реферат, курсовая, дипломная, отчет по практике, перевод, эссе, РГР, ВКР, диссертация, шпоры...) с проверкой на плагиат (с высоким % оригинальности) выполненная в самые короткие сроки, с гарантией и бесплатными доработками до самой сдачи/защиты - ОБРАЩАЙТЕСЬ!
Курсовая работа на тему:
"Разработка алгоритма диаризации"
Оглавление
Введение 3
1. Постановка задачи 4
1.1. Описание задачи . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Постановка задачи . . . . . . . . . . . . . . . . . . . . . . 5
2. Обзор литературы и существующих решений 6
2.1. Диаризация дикторов . . . . . . . . . . . . . . . . . . . . . 6
2.1.1. Детектор Речевой Активности . . . . . . . . . . . 6
2.1.2. Сегментация . . . . . . . . . . . . . . . . . . . . . . 6
2.1.3. Кластеризация . . . . . . . . . . . . . . . . . . . . . 7
2.2. Идентификация диктора . . . . . . . . . . . . . . . . . . . 7
2.3. Формат аудиофайла . . . . . . . . . . . . . . . . . . . . . . 8
2.3.1. Заголовок . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.2. Блок Данных . . . . . . . . . . . . . . . . . . . . . 9
2.4. Существующие решения . . . . . . . . . . . . . . . . . . . 9
2.4.1. LIUM_SpkDiarization . . . . . . . . . . . . . . . . . 9
2.4.2. AudioSeg . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.3. ALIZE . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.4. DiarTk . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.5. Bob . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3. Описание предложенного решения 13
3.1. Алгоритм VAD . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2. Алгоритм диаризации . . . . . . . . . . . . . . . . . . . . . 16
4. Результаты тестирования 19
5. Заключение 20
Введение
Существует достаточно много задач, связанных с информацией, из- влекаемой из аудиосигнала. Примерами данных задач являются:
• Распознавание речи: ”Что было сказано?”
• Распознавание языка: ”На каком языке это было сказано?”
• Распознавание диктора: ”Кто говорит?”
Распознавание дикторов (англ. Speaker Recognition) — это задача идентификации того, кто говорит. Задача распознавания дикторов вклю- чает в себя множество задач, которые прямо или косвенно связаны между собой. Среди них можно выделить следующие: задача верифи- кации диктора (англ. speaker verification), задача идентификации дик- тора (англ. speaker identification) и задача классификации диктора (ан- гл. speaker classification). Первая задача старается сравнить диктора с заявленной моделью, поэтому данную задачу можно назвать задачей взаимно-однозначного сравнения. Она используется, чтобы определить, является ли диктор тем, кем он представился. Поэтому задача верифи- кация диктора обычно изучается с точки зрения области применения биометрической идентификации. Цель задачи идентификации диктора
— узнать, кто говорит. Так речевой сегмент сравнивается с базой дан-
ных моделей дикторов, то есть выполняется сравнение «один ко мно- гим». Задача классификации диктора — задача, в которой определить к какому классу относится диктор. Примерамиклассификации являются гендерная, возрастная классификации и классификация настроения [3]. Частью каждой из этих задач является подзадача диаризации дик- торов (англ. diarization). Диаризация дикторов (или разделение дикто- ров) — это процесс разделения входного аудиосигнала на сегменты в соответствии с идентификацией личности диктора. Она используется
для ответа на вопрос: ”Кто говорит и когда?” [9].
В рамках данной курсовой работы рассматривается задача диари- зации. Целью является реализация решения данной задачи в опреде- ленных условиях эксплуатации, которые будут описаны в дальнейшем.
1. Постановка задачи
1.1. Описание задачи
Два человека, разделенных перегородкой, разговаривают друг с дру- гом. Обоих записывают микрофоны с инфракрасным датчиком, обна- руживающим присутствие и перемещение человека (Рис. 1).
Рис. 1: Расположение дикторов и микрофонов
Каждый такой микрофон подключен к регистратору, который пре- образует аналоговый сигнал, поступающий с микрофона, в цифровой. Цифровой сигнал передается на сервер и записывается в формате WAV на жесткий диск (Рис. 2).
Рис. 2: Схема обработки аудиосигнала
1.2. Постановка задачи
Цель работы — разработать, реализовать и протестировать алго- ритм диаризации дикторов, позволяющий уменьшить накладные расхо- ды на вычислительные ресурсы и память в ситуации, описанной выше. Для достижения цели были поставлены следующие задачи:
• Изучить:
1. Структуру WAV файлов;
2. Работу текущих алгоритмов диаризации;
• Разработать, реализовать и внедрить алгоритм диаризации;
• Протестировать алгоритм на реальных данных;
1Центр Речевых Технологий
2. Обзор литературы и существующих ре- шений
2.1. Диаризация дикторов
Эта глава дает некоторые теоретические основы в области распозна- вания аудиосигнала и рассказывает об уже существующих решениях.
Полученный в результате работы алгоритм планируется использо- вать в будущих продуктах ”ЦРТ1”.
Диаризация дикторов (или разделение дикторов) — это процесс раз- деления входного аудиосигнала на сегменты в соответствии с иденти- фикацией личности диктора. Она используется для ответа на вопрос: ”Кто говорит и когда?”. Задача разделения дикторов — это комбинация задач сегментации говорящего и кластеризации говорящего. Первая на- правлена на поиск точек смены динамиков в аудиосигнале. Вторая на- правлена на группирование речевых сегментов на основе характеристик говорящего [9].
2.1.1. Детектор Речевой Активности
В системах распознавания диктора немаловажную роль играет де- тектор речевой активности (англ. Voice Activity Detection, VAD) — ал- горитм, классифицирующий исходные участки фонограммы как речь или не речь [17]. Среди всех алгоритмов детекции речевой активности наибольшей популярностью из-за своей простоты пользуются алгорит- мы, основанные на анализе кратковременной энергии сигнала (англ. short-term energy) и скорости переходов через ноль (англ. zero-crossing rate) [12, 16].
2.1.2. Сегментация
Сегментация — это задача нахождения в аудиосигнале точек изме- нения, где произошла смена диктора [9]. Методы сегментации обычно делятся на две основные категории:
• Метрическая: Определяет, исходят ли два акустических сегмента из одного динамика, вычисляя расстояние между двумя акусти- ческими сегментами.
• Модельная: Модели с помощью учителя обучаются распознавать дикторов, а затем используются, для оценивания, где есть точки изменения в аудиофайле.
Сегментация на основе метрик является наиболее популярным ти- пом метода, так как никаких предварительных знаний не требуется для ее работы. [13]
2.1.3. Кластеризация
• Аггломеративный: Это подход снизу-вверх (англ. bottom-up). Пер- воначально для каждого сегмента существует один кластер, икла- стеры итеративно объединяются, пока набор кластеров не достиг- нет оптимального размера.
При кластеризации сегментов изучается сходство между ними, и строится иерархия кластеров [9]. Существуют два основных подхода к созданию такой иерархии:
• Разделяющий: Это подход сверху-вниз (англ. top-down). В начале все сегменты хранятся в одном большом кластере. Новый дик-тор вводится рекурсивно, и кластер разбивается на все меньшие и меньшие кластеры.
Поскольку агломерационная кластеризация имеет хороший баланс между простотой структуры и производительностью, этот подход наи- более часто используется [5].
2.2. Идентификация диктора
Следующим этапом распознавания диктора является определение того, какие кластеры соотносятся с каким диктором. Данная фаза со- стоит из двух: фазы обучения и фазы тестирования.
Фаза обучения включает в себя подготовку модели для каждого дик- тора. Основная идея обучения состоит в том, чтобы иметь набор па- раметров, которые могут представлять характеристики речи оратора. Этап обучения может быть выполнен независимо от системы распозна- вания. Если набор моделей дикторов обучен и создана база данных этих моделей, база данных может быть включена в существующие данные в систему распознавания.
Фаза тестирования берет данные от тестового диктора и сравнивает эти данные с каждой моделью в базе данных. Таким образом можно идентифицировать личность говорящего в каждом кластере [3].
2.3. Формат аудиофайла
При записи аудиосигнала используется формат WAV, который был создан в 1991 году компаниями IBM и Microsoft [7]. Файл WAV является сферой приложения формата RIFF2 для хранения аудио в «цепочках» (англ. chunk). Формат RIFF действует как «обертка» для различных форматов кодирования звука. Зачастую формат WAV используется для хранения несжатого звука вформате линейной импульсной кодовой мо- дуляции (англ. Linear Pulse Code Modulation, LPCM). Файл WAV состо- ит из заголовка и блока данных.
2.3.1. Заголовок
Заголовок — начало WAV файла. Он используется для предостав- ления информации о размере файла, количестве каналов, частоте дис- кретизации (англ. sample rate), количестве бит в сэмпле.
Заголовок WAV файла имеет длину 44 байта. Следующая таблица наглядно показывает структуру заголовка [4]:
2Resource Interchange File Format
2.3.2. Блок Данных
Сразу же после заголовка начинается блок, в котором хранятся дан- ные.
В зависимости от количества каналов меняется то, как располага- ются значения амплтитуд канала/каналов. Например, если количество каналов равно единице, то значения амплитуды расположены последо- вательно. В случае, если каналов больше одного, сначала идет значение амплитуды для первого канала, затем для второго и так далее [7].
2.4. Существующие решения
2.4.1. LIUM_SpkDiarization
Существует несколько свободно распространяемых продуктов и биб- лиотек, которые могут реализовывать данную функциональность.
2.4.2. AudioSeg
LIUM_SpkDiarization — это программное обеспечение, предназна- ченное для диаризации дикторов. Оно написано на Java и включает в себя самые последние разработки в этой области[15].
Данное программное обеспечение было разработано для француз- ской оценочной кампании ESTER2, где оно получило наилучшие ре- зультаты в задаче диаризации дикторов трансляции новостей в 2008 году. Этот набор инструментов оптимизирован для радио или теле- шоу, поэтому уровен производительности на телефонных разговорах и встречах может быть ниже.
LIUM_SpkDiarization содержит полный набор инструментов для со- здания системы для диаризации дикторов, которые включают в себя MFCC3, обнаружение речи / неречевой речи и способы диаризации ди- намика.
Данное ПО расспространяется в качесте JAR-архива, который со- держит полную, готовую к использованию скомпилированную версию. Также можно воспользоваться и исхониками данногоПО, которое мож- но загрузить с официального сайта университета Ле-Мана [10].
AudioSeg — инструментарий для сегментации звука и классифика- ции аудиопотоков, который написан на языке C и распространяется в виде исходных кодов [8].
AudioSeg представляет собой набор алгоритмов, помогающих созда- вать прототипы и разрабатывать приложения, использующие следую- щие возможности:
• обнаружение тишины / звуковой активности;
• слепая сегментация с помощью BIC4;
• кластеризация сегментов;
• классификация сегментов с использованием GMM5;
•
совместная сегментация и классификация с использованием HMM6;
3Mel-Frequency Cepstral Coefficients 4Bayesian information Criterion 5Gaussian Mixture Models
6Hidden Markov Models
2.4.3. ALIZE
ALIZÉ — это платформа с открытым исходным кодом для распо- знавания говорящего, написанной на языке C++. [1]
Целью этого проекта является предоставление набора низкоуровне- вых и высокоуровневых структур, которые позволят любому разраба- тывать приложения, выполняющие различные задачи в области распо- знавания диктора.
тека, которая включает в себя все функции, необходимые для использо- вания гауссовых смесей, а также функции ввода-вывода для различных форматов файлов.
Поверх этого ядра был построен LIA_RAL — инструментарий, пред- лагающий функциональность более высокого уровня, который состоит из следующих компонентов:
• LIA_SpkDet — набор инструментов для обучения моделей, нор- мализации функций, нормализации оценок и т.д.;
ALIZÉ была разработана с многоуровневой архитектурой. Базовым уровнем является ALIZE-Core — низкоуровневая библио-
• LIA_SpkSeg — инструменты для диаризации дикторов;
• LIA_Utils — утилиты для управления различными; форматами данных, используемыми в ALIZÉ;
• LIA_SpkTools — библиотека, которая обеспечивает высокоуров- невые функции поверх ядра ALIZE;
Параллельно LIA_RAL также включает в себя библиотеку SimpleSpkDetSy которая предлагает простой высокоуровневый API для разработчиков, которые хотят легко встроить проверку или идентификацию динамика
в свои приложения. Существует также Java-версия этого API, предна- значенная для разработки приложений Android [2].
2.4.4. DiarTk
DiarTk - это набор инструментов с открытым исходным кодом на C++ для диаризации дикторов, который распространяется по лицен- зии GPL. Он распространяется в виде архива с исходным кодом, ко- торый можно скачаить с официального сайта разработчиков и кото- рый необходимо скомпилировать на вашем компьютере. При работе с аудиофайлами система использует акустические признаки, MFCC7, а также может дополнительно использовать такие признаки как TDOA8 и FDLP9 / MS10 [14].
2.4.5. Bob
Bob - это бесплатный набор инструментов для обработки сигналов и машинного обучения, первоначально разработанный группой Biometrics в Научно-исследовательском институте Idiap,Швейцария.
Инструментарий написан на смеси Python и C ++ и предназначен как для эффективной работы, так и для сокращения времени разработ- ки. Он состоит из достаточно большого количествапакетов, в которых реализованы инструменты для обработки изображений, аудио и видео, машинного обучения и распознавания образов [6].
7Mel-Frequency Cepstral Coefficients
8Time Delay of Arrivals
9Frequency Domain Linear Prediction
10Modulation Spectrum
3. Описание предложенного решения
На сервере одновременно запущены несколько микро-сервисов (Рис. 3). В течение рабочего дня работает сервис Recorder, который отвечает за запись аудио-потока, поступающего из BOX.
3.1. Алгоритм VAD
Рис. 3: Схема обработки аудиосигнала
В нашей задаче используются микрофоны с инфракрасным датчи- ком, поэтому в первую очередь нам нужно выделить участки, когда перед микрофоном есть диктор. Для решения данной проблемы был реализован детектор речевой активности, основанный на расчете крат- ковременной энергии [11], работающий в сервисе Recorder (Рис. 4).
После окончания рабочего дня запускается микро-сервис Integrator, который в свою очередь группирует, обрабатывает, анализирует и под- готавливает файлы, записанные за весь день.
Рис. 4: Диаграмма Recorder
Расчет кратковременной энергии - это параметр, используемый при классификации сегментов. Если энергия входящего кадра высокая, кадр классифицируется на вокализованный кадр, а если энергия входящего кадра низкая, он классифицируется на невокализованный кадр.
Кратковременная энергия кадра En определяется согласно формуле
L
∞
|x(m)| · h(m, n)
m=1
Где
h(m, n) = 1, if n · N ≤ m ≤ (n+1) · N
0, Otherwise
Поток данных для классификации входного сигнала на вокализо- ванные или невокализованные сегменты выполняется, как показано на блок-схеме.
Способ начинается с накопления достаточного размера сегмента для записи. После этого на данном сегменте вычисляется кратковременная энергия.
3.2. Алгоритм диаризации
Рис. 5: Блок диаграмма работы VAD-алгоритма
В покадровом кадре речевой сигнал делится на неперекрывающиеся кадры из 64 выборок с частотой дискретизации 16 кГц, которая экви- валентна продолжительности времени 128 мс. Измерения кратковре- менной энергии этих кадров сравниваются с их пороговым значением, равным десятой части Short.MAX_VALUE. Кадры классифицируются как вокализованные сегменты. Иначе, кадры классифицируются как невокализованные сегменты.
При решении задачи мы предполагаем, что в каждый микрофон говорит только один человек. При решении задачи мы знаем, как мик- рофоны расположены относительно каждого из дикторов, поэтому мы можем определить, на каком из микрофонов амплитуда диктора будет больше или меньше.
Рис. 6: Диаграмма Integrator
Исходя из этого предположения и условий эксплуатации, задачу кластеризации можно свести к задаче определения есть человек перед микрофоном или нет в VAD-алгоритме. Поэтому для данной задачи был использован модифицированный детектор речевой активности, ко- торый используется в сервисе Integrator (Рис. 6).
Поток данных для классификации входного сигнала на вокализо- ванные или невокализованные сегменты выполняется, как показано на блок-схеме.
В покадровом кадре речевой сигнал делится на неперекрывающиеся кадры из 64 выборок с частотой дискретизации 16 кГц, которая экви- валентна продолжительности времени 128 мс. На каждом из сегментов вычисляется кратковременная энергия с учетом усиления, которое пе- редано программе.
Измерения кратковременной энергии E1n каждого кадра первогока-
нала вычисляется по следующей формуле:
Рис. 7: Блок диаграмма работы алгоритма диаризации
L
∞
Где
E1n =
|x(m)| · h(m, n)
m=1
0, Otherwise
h(m, n) = amplifyLeft, if n · N ≤ m ≤ (n+1) · N
Измерения кратковременной энергии E2n этих кадров второго кана- ла вычисляются по следующей формуле:
L
∞
Где
E2n =
|x(m)| · h(m, n)
m=1
0, Otherwise
h(m, n) = amplifyRight, if n · N ≤ m ≤ (n+1) · N
Кадры первого канала классифицируются как речь, если выполня- ется одно из следующих условий:
• E1n > E2n
• E1n > amplitudeThreshold
• E1n ≤ E2n · minThreshold && E2n ≥ E1n · maxThreshold
Если не выполняется ни одно условие, то в кадрах первого канала нет речи.
После классификации для повышения помехоустойчивости мы де- лаем следующую проверку:
• Если между двумя кадрами, в которых нет речи, лежит кадр, классифицированный как речь, мы меняем его классификацию и считаем, что в данном кадре нет речи.
После окончания обработки файла. На выходе мы выдаем проме- жутки времени, в течение которых на первом канале молчали.
4. Результаты тестирования
В ходе работы над данным проектом было проведено тестирование алгоритма на данных, взятых у заказчика.
Тестирование проводилось на компьютере с 64-разрядным четырёхъ- ядерным процессом Intel® Core™ i5-3450 с базовой частотой 3.10 ГГц, вместимостью ОЗУ11 16 ГБ и SSD на 512 ГБ.
Так как длина каждой сессии различна, и так как нас интересует как измненились накладные расходы на вычислительные ресурсы и память, то нас интересуют следующие параметры:
• Память;
• Отношение времени диаризации аудиофайла до и после внедрения детектора речевой активности;
• Отношение времени полной обработки аудиофайла до и после внед- рения детектора речевой активности и алгоритма диаризации;
• Отношение времени полной работы сервиса Integrator до и после внедрения детектора речевой активности и алгоритма диариза- ции;
Таблица 1: Результаты тестирования
11Оперативного Запоминающего Устройства
5. Заключение
В рамках работы были выполнены следующие задачи:
• Рассмотреть существующие решения
• Изучить формат хранения данных.
• Разработать алгоритм диаризации дикторов.
• Внедрить алгоритм в один из текущих проектов.
• Протестировать на реальных данных.
Список литературы
[1] ALIZÉ // ALIZÉ wiki. – 2020. – Access mode: https:
//alize.univ-avignon.fr/mediawiki/index.php/Main_Page
(online; accessed: 18.05.2020).
[2] ALIZÉ // ALIZÉ opensource speaker recognition. – 2020. – Access mode: https://alize.univ-avignon.fr/ (online; accessed: 18.05.2020).
[3] Beigi H. Fundamentals of Speaker Recognition. – Springer Publishing Company, Incorporated, 2011. – ISBN: 0387775919,9780387775913.
[4] Coding Audio. Структура WAV файла. – 2008. – Ре- жим доступа: https://audiocoding.ru/articles/ 2008-05-22-wav-file-structure/ (дата обращения: 11.12.2019).
[5] A Comparative Study of Bottom-Up and Top-Down Approaches to Speaker Diarization / N. Evans, S. Bozonnet, D. Wang et al. // IEEE Transactions on Audio, Speech, and Language Processing. – 2012. – Feb. – Vol. 20, no. 2. – P. 382–392.
[6] Continuously Reproducing Toolchains in Pattern Recognition and Machine Learning Experiments / A. Anjos, M. Günther,
T. de Freitas Pereira et al. // International Conference on Machine Learning (ICML). – 2017. – 08. – Access mode: http://publications.idiap.ch/downloads/papers/2017/Anjos_ ICML2017-2_2017.pdf.
[7] IBM, Microsoft. Multimedia Programming Interface and Data Specifications 1.0. – 1991. – Aug.
[8] InriaForge // AudioSeg: Project Home. – 2010. – Access mode: https://gforge.inria.fr/projects/audioseg (online; accessed: 18.05.2020).
[9] Kotti M., Moschou V., Kotropoulos C. Speaker segmentation and clustering // Signal Processing. – 2008. – P. 1091–1124.
[10] LIUM_SpkDiarization. – 2020. – Access mode: https:
//projets-lium.univ-lemans.fr/spkdiarization/ (online; accessed: 18.05.2020).
[11] Meduri Sameeraj, Ananth Rufus. A Survey and Evaluation of Voice Activity Detection Algorithms: Speech Processing Module. – Koln, DEU : LAP Lambert Academic Publishing, 2012. – ISBN: 3659172049.
[12] Moattar M., Homayoonpoor M. A simple but efficient real-time voice activity detection algorithm // European Signal Processing Conference. – 2010. – 12.
[13] Speaker Diarization: A Review of Recent Research / X. Anguera,
S. Bozonnet, N. Evans et al. // IEEE Transactions on Audio, Speech, and Language Processing. – 2012. – Feb. – Vol. 20, no. 2. – P. 356–370.
[14] Vijayasenan Deepu, Valente Fabio. DiarTk : An Open Source Toolkit for Research in Multistream Speaker Diarization and its Applicationto Meetings Recordings. – Vol. 3. – 2012. – 01.
[15] An open-source state-of-the-art toolbox for broadcast news diarization / Mickael Rouvier, Grégor Dupuy, Paul Gay et al. – 2013.
[16] Будько М.Б. Алгоритм определения речевой активности и генератор комфортного шума высокого быстродействия. – 2006. – Режим доступа: https://cyberleninka.ru/article/n/
algoritm-opredeleniya-rechevoy-aktivnosti-i-generator-komfortno
[17] Симончик К.К., Галинина О.С., Капустин А.И. Алгоритм обнаружения речевой активности на основе статистик ос- новного тона в задаче распознавания диктора. – 2010. –
Режим доступа: https://cyberleninka.ru/article/n/ algoritm-obnaruzheniya-rechevoy-aktivnosti-na-osnove-statistik-