Эта статья поможет вам глубоко погрузиться в распознавание динамиков и узнать все об обработке аудиоданных.

Мы рассмотрим РАСПОЗНАВАНИЕ ДИНАМИКОВ ИЗ RAW WAVEFORM С SINCNET - подход, который быстро сходится на небольших обучающих данных.

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

Модели распознавания динамиков отражают характеристики голоса человека.

Здесь мы определяем «Кто говорит?».

Двумя важными частями процесса распознавания говорящего являются Проверка говорящего и Идентификация говорящего.

Проверка докладчика: это индивидуальный процесс согласования. Здесь у нас есть предварительная информация о том, что это динамик «X» (это этап проверки), затем голос соответствует говорящему «X» (что мы получаем из этапа регистрации ) только голосовая печать. Основываясь на степени сходства, мы можем установить порог сопоставления.

Идентификация выступающих: это индивидуальный процесс согласования. Здесь, когда приходит говорящий, его голос сопоставляется с n говорящими, и на основании этого делается прогноз «Кто говорит?».

Глубокое обучение ускорило развитие речи

Раньше для речи были созданы вручную функции, такие как MFCC и FBANK, но мы не можем использовать эти функции во всех задачах, связанных с речью.

Однако в последнее время развитие речи было ускорено с помощью глубокого обучения.

Сверточная нейронная сеть в миксе:

CNN (сверточные нейронные сети) также вошли в микс для захвата важных речевых функций, демонстрируя лучшую производительность, чем вышеупомянутые функции, созданные вручную.

Когда мы вводим исходную речевую информацию в CNN, она учится улавливать низкоуровневые речевые представления, что помогает в изучении важных характеристик узкополосных динамиков, таких как высота звука и форманты.

Информация, относящаяся к динамику, фиксируется в более низкой частотной области. Таким образом, CNN должна быть спроектирована таким образом, чтобы улавливать значимые особенности.

Согласно статье, опубликованной на Sincnet, первый слой свертки текущей формы волны CNN является наиболее важным, поскольку он получает входные данные большого размера. На него также влияет Исчезающий градиент.

Чтобы решить эту проблему в Sincnet, мы параметризовали функции sinc для реализации полосовых фильтров.

Низкие и высокие частоты среза - единственные параметры фильтра, полученные из данных. Это решение по-прежнему предлагает значительную гибкость, но вынуждает сеть сосредоточиться на настраиваемых параметрах высокого уровня с широким влиянием на форму и полосу пропускания результирующего фильтра.

В следующем разделе мы увидим, как Sincnet спроектирован для эффективной работы.

Разрушение архитектуры Sincnet

Возьмем стандартную CNN, которая выполняет свертки во временной области (свертка во временной области равна умножению в частотной области) между входной формой волны и некоторой конечной импульсной характеристикой ( FIR) фильтры, как указано ниже.

Здесь

x [n] = фрагмент речевого сигнала,

h [n] - фильтр длины L,

y [n] - это результат.

Мы можем сохранить этот фрагмент на основе экспериментов с набором данных, и все элементы L каждого фильтра извлекаются из данных.

Sincnet выполняет свертки функции g, которая зависит от Theta.

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

Здесь f1 и f2 - изученные низкие и высокие частоты среза, а rect (·) - прямоугольная функция в частотной области величины. .

Функция Sinc определяется как sinc (x) = sin (x) / x.

После возврата во временную область (с использованием обратного преобразования Фурье) эталонная функция g принимает вид:

Основные характеристики, которые определяют уникальный динамик, отражены в нижнем частотном диапазоне. В приведенном выше уравнении fs равно частоте дискретизации входного сигнала, а частота среза инициализируется случайным образом в диапазоне [0, fs / 2].

Частота выборки может варьироваться в зависимости от типа данных, с которыми вы экспериментируете. Система IVR имеет частоту дискретизации 8 кГц, тогда как стереосистема имеет частоту дискретизации 44 кГц.

Мы можем инициализировать фильтры на основе частот среза банка фильтров мел-шкалы. Основное преимущество такого назначения фильтров состоит в том, что он имеет преимущество прямого выделения большего количества фильтров в нижней части спектра, которая имеет уникальную информацию о голосах говорящего.

Чтобы гарантировать, что f1 ≥ 0 и f2 ≥ f1, в предыдущее уравнение используются следующие параметры:

Здесь мы не ограничиваем f2, то есть не налагается сила, чтобы f2 была меньше, чем частота Найквиста (минимальная скорость, с которой сигнал может быть дискретизирован). без внесения ошибок, что вдвое превышает самую высокую частоту, присутствующую в сигнале), поскольку модель учится этому во время обучения. Различные последующие уровни решают придавать большее или меньшее значение каждому выходному сигналу фильтра.

Бесконечное количество элементов L требует идеального полосового фильтра. Идеальный полосовой фильтр - это когда полоса пропускания идеально ровная, а затухание в полосе задерживания бесконечно. Таким образом, любое усечение g неизбежно приводит к приближению к идеальному фильтру, характеризующемуся рябью в полосе пропускания и ограниченным затуханием в полосе задерживания.

Итак, для решения этой проблемы выполняется оконное управление. Это выполняется просто путем умножения усеченной функции g на оконную функцию w, которая направлена ​​на сглаживание резких разрывов на концах g:

В этой статье используется популярное окно Хэмминга, определяемое следующим образом:

Мы можем получить высокочастотную избирательность с помощью окна Хэмминга. Мы можем использовать и другие окна. Одно важное замечание здесь заключается в том, что из-за симметрии фильтры можно эффективно вычислять, рассматривая одну половину фильтра и наследуя результаты для другой половины.

Обучение такой модели приводит к быстрой сходимости, меньшему количеству параметров для обучения, интерпретируемости.

Быстрая сходимость: Sincnet спроектирован таким образом, что вынуждает сеть сосредоточиться на параметрах фильтрации, которые влияют на ее производительность. Этот стиль техники фильтрации помогает адаптироваться к данным, собирая знания, точно так же, как методы извлечения признаков в аудиоданных. Эти предварительные знания значительно упрощают изучение характеристик фильтра, помогая SincNet значительно быстрее перейти к лучшему решению. Мы получаем быструю сходимость в течение первых 10–15 эпох.

Меньшее количество параметров для обучения: SincNet резко уменьшает количество параметров в первом сверточном слое. Например, если мы рассмотрим слой, состоящий из F фильтров длины L, стандартная CNN использует параметры F · L по сравнению с 2F, рассматриваемым SincNet. Если F = 80 и L = 100, мы используем 8k параметров для CNN и только 160 для SincNet. Более того, если мы удвоим длину фильтра L, стандартная CNN удвоит количество своих параметров (например, мы перейдем с 8k до 16k), в то время как SincNet будет иметь неизменное количество параметров (только два параметра используются для каждого фильтра, независимо от его длины L). . Это дает возможность создавать очень селективные фильтры с множеством ответвлений без фактического добавления параметров к задаче оптимизации. Более того, компактность архитектуры SincNet делает ее пригодной в режиме нескольких выборок.

Интерпретируемость: карты характеристик SincNet, полученные в первом сверточном слое, определенно более интерпретируемы и удобочитаемы, чем другие подходы. Фактически, набор фильтров зависит только от параметров, имеющих ясный физический смысл.

Анализ фильтра

На рисунках выше мы можем легко увидеть, как фильтры CNN и Sincnet обучаются по-разному. Этот фильтр был изучен с использованием набора данных Librispeech (частотная характеристика отображается в диапазоне от 0 до 4 кГц). Мы видим, что обычная CNN изучает шумные фильтры.

На двух рисунках мы можем видеть, какие полосы частот покрываются CNN и Sincnet.

Мы можем видеть, что первый пик соответствует области высоты тона (средний тон составляет 133 Гц для мужчины и 234 Гц для женщины).

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

Наконец, третий пик (в диапазоне от 900 до 1400 Гц) захватывает некоторые важные вторые форманты, такие как вторая форманта гласного звука / a /, которая находится в среднем на 1100 Гц.

SincNet изучает фильтры, которые в среднем более избирательны, чем фильтры CNN, что позволяет лучше улавливать подсказки узкополосного динамика.

Использование той же модели для проверки динамика

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

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

Этот d-вектор используется для проверки того, является ли новый говорящий говорящим или нет. Давайте разделим это на две части: регистрация докладчика и проверка докладчика.

Регистрация выступающих: на этом этапе, когда новый пользователь входит в систему, там сохраняются образцы голоса, и для всех образцов вычисляется d-вектор, а среднее значение берется и сохраняется в виде распечатки голоса пользователя. так что когда в следующий раз придет пользователь sam, мы сможем сопоставить его с этой сохраненной голосовой печатью. Здесь более длинные образцы голоса помогают лучше уловить особенности, а большее количество образцов помогает показать вариации голоса пользователя. Хороший голосовой образец находится в диапазоне 3-5 секунд.

Проверка динамика: на этапе проверки у нас уже есть данные о том, что пользователи сохранили голосовую распечатку, и снова, когда дело доходит до проверки и что-то говорит, мы берем его d-вектор и сравниваем его с ранее сохраненной голосовой печатью. Мы можем использовать косинусное сходство, чтобы сопоставить голосовые отпечатки.

Заключение

Работа со звуком требует тщательного изучения данных и пробного выбора лучших способов для наших сценариев использования.

Следует понимать, какое влияние может иметь разделение данных по полу, возрасту и т. Д.

Я пробовал разделять данные по полу, и это дало мне лучшие результаты за счет уменьшения пространства поиска.

Попробуйте поиграть с разными частотами дискретизации, шумом и другими вещами, которые могут улучшить производительность.

Помните, лучшее решение приходит после утомительных экспериментов.

Удачной игры !!