Курсовая работа на тему: "Разработка алгоритма диаризации"

У нас на сайте представлено огромное количество информации, которая сможет помочь Вам в написании необходимой учебной работы. 

Но если вдруг:

Вам нужна качественная учебная работа (контрольная, реферат, курсовая, дипломная, отчет по практике, перевод, эссе, РГР, ВКР, диссертация, шпоры...) с проверкой на плагиат (с высоким % оригинальности) выполненная в самые короткие сроки, с гарантией и бесплатными доработками до самой сдачи/защиты - ОБРАЩАЙТЕСЬ!

Курсовая работа на тему: 

"Разработка алгоритма диаризации"

Оглавление

Введение                                                                                                        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

Список литературы                                                                                 21

 

Введение

Существует достаточно много задач, связанных с информацией, из- влекаемой из аудиосигнала. Примерами данных задач являются:

    Распознавание речи: ”Что было сказано?”

    Распознавание языка: ”На каком языке это было сказано?”

    Распознавание диктора: ”Кто говорит?”

Распознавание дикторов (англ. 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-