Реализация распознавания человеческого голоса на основе TensorFlow Lite

машинное обучение TensorFlow
Реализация распознавания человеческого голоса на основе TensorFlow Lite

С помощью TensorFlow Lite мобильные терминалы и устройства IoT могут реализовать распознавание голоса на терминале, что может применяться в таких областях, как безопасность и медицинский мониторинг. Tonghui и Shangye из Xianyu Technology Interaction Group, принадлежащей Alibaba, внедрили полный набор функций извлечения голосовых функций, обучения моделей и создания конечных моделей с помощью TensorFlow Lite.

Заявление о перепечатке: эта статья перенесена из публичного аккаунта [Xianyu Technology]

Резюме

Большая часть существующих средств распознавания человеческого голоса реализована на стороне сервера, что приведет к следующим двум проблемам:

  1. Когда сеть плохая, это вызовет большую задержку и приведет к плохому взаимодействию с пользователем.

  2. Когда объем трафика большой, он будет занимать много ресурсов сервера.

Чтобы решить две вышеупомянутые проблемы, мы решили реализовать функцию распознавания человеческого голоса на клиенте. В этой статье используются методы машинного обучения для распознавания человеческих голосов. Используемый фреймворк — это фреймворк TensorFlow Lite от Google, который настолько мал, как следует из его названия. При обеспечении точности размер фреймворка составляет всего около 300 КБ, а сжатая модель составляет четверть от модели TensorFlow [1]. Поэтому фреймворк TensorFlow Lite больше подходит для использования на клиенте.

Чтобы повысить скорость распознавания человеческого голоса, аудиофункции должны быть извлечены в качестве входных образцов системы машинного обучения. Алгоритм выделения признаков, используемый в этой статье, представляет собой алгоритм кепстра Мела, основанный на механизме человеческого слуха [2].

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

  1. Ускорение набора инструкций: вводится набор инструкций ARM, и для ускорения операций выполняется несколько оптимизаций набора инструкций.

  2. Многопоточное ускорение. Многопоточная параллельная обработка используется для трудоемких операций.

  3. Ускорение модели: выберите модель, которая поддерживает оптимизацию NEON, и предварительно загрузите модель, чтобы сократить время предварительной обработки.

  4. Ускорение алгоритма: I) Уменьшить частоту дискретизации звука. II) Выберите полосу частот вокала (20 Гц ~ 20 кГц) и исключите полосу частот голоса, отличного от человеческого. III) Разумное использование окон и нарезка для предотвращения чрезмерных вычислений. IV) Обнаружение тишины для сокращения ненужных сегментов времени.

1 Обзор

1.1 Процесс распознавания человеческого голоса

Распознавание человеческого голоса делится на две части: обучение и прогнозирование. Обучение относится к созданию прогностических моделей, а прогнозирование — к использованию моделей для получения прогнозов.

Сначала вводится тренировочный процесс, который делится на следующие три части:

  1. На основе алгоритма кепстра Мела звуковые признаки извлекаются и преобразуются в спектральные изображения.

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

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

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

1.2 Структура искусственного интеллекта

В ноябре 2017 года Google объявила на конференции I/O о запуске TensorFlow Lite, облегченного решения для TensorFlow для мобильных и встроенных устройств. Может работать на нескольких платформах, от стоечных серверов до небольших устройств IoT. Но с широким использованием моделей машинного обучения в последние годы возникла необходимость в их развертывании на мобильных и встроенных устройствах. А TensorFlow Lite позволяет делать выводы о моделях машинного обучения на устройстве с малой задержкой.

Эта статья основана на TensorFlow Lite, системе обучения искусственного интеллекта, разработанной Google, название которой происходит от ее собственного принципа работы. Tensor (тензор) означает N-мерный массив, Flow (поток) означает вычисление на основе графа потока данных, TensorFlow — это процесс вычисления тензоров, перетекающих с одного конца графа потока на другой конец. TensorFlow — это система, которая передает сложные структуры данных в нейронные сети искусственного интеллекта для анализа и обработки.

На следующем рисунке показана архитектура TensorFlow Lite [1]:

Рисунок 1.1 Схема архитектуры TensorFlow Lite

2. Алгоритм кепстра Мела

2.1 Обзор

Алгоритм распознавания звука в этой главе, алгоритм кепстра Мела [2], разделен на следующие этапы, которые будут подробно представлены в последующих разделах.

  1. Входной звуковой файл преобразуется в необработанные звуковые данные (сигнал во временной области).

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

  3. Частота преобразуется в линейную зависимость, которую человеческое ухо может воспринимать посредством спектрального преобразования Мела.

  4. С помощью анализа кепстра Мела преобразование DCT используется для разделения компонентов постоянного сигнала и синусоидальных компонентов сигнала [3].

  5. Извлеките вектор признаков звукового спектра и преобразуйте вектор в изображение.

Оконные окна и кадрирование предназначены для обеспечения краткосрочной стабильности речи во временной области Преобразование спектра Мела — преобразование восприятия частоты человеческим ухом в линейную зависимость Цель кепстрального анализа — понять преобразование Фурье любого сигнала Все может разложить на постоянную составляющую и сумму нескольких синусоидальных сигналов посредством преобразования Фурье.

Рисунок 2.1 Звуковой сигнал во временной области

На рис. 2.1 показан звуковой сигнал во временной области, и интуитивно трудно увидеть закон изменения частоты. На рис. 2.2 показан звуковой сигнал в частотной области, который отражает такую ​​информацию, как громкость и частота, которые могут отражать звук. На рис. 2.3 представлена ​​характеристика звука через кепстр Мел, который может извлекать звук.

Рисунок 2.2 Звуковой сигнал в частотной области

Рисунок 2.3 Кепстральные характеристики звука

Рис. 2.4. Процесс реализации алгоритма кепстра Мела

2.2. Кратковременное преобразование Фурье.

Звуковой сигнал является одномерным сигналом во временной области, и интуитивно трудно увидеть закон изменения частоты. Если его преобразовать в частотную область с помощью преобразования Фурье, хотя можно увидеть частотное распределение сигнала, информация во временной области будет потеряна, и изменение частотного распределения во времени будет невозможно увидеть. Для решения этой проблемы появилось множество методов частотно-временного анализа. Кратковременный анализ Фурье, вейвлет, распределение Вигнера и т. д. — все это широко используемые методы частотно-временного анализа.

Рисунок 2.5 Схематическая диаграмма преобразования БПФ и преобразования STFT

Спектр сигнала можно получить с помощью преобразования Фурье. Применение спектра сигнала очень обширно, и сжатие и шумоподавление сигнала могут быть основаны на спектре. Однако преобразование Фурье предполагает, что сигнал является стационарным, то есть статистические свойства сигнала не меняются со временем. Звуковые сигналы не являются стационарными сигналами, есть много сигналов, которые появляются на длительный период времени и тут же исчезают. Если этот сигнал полностью преобразован Фурье, он не может отражать изменение звука во времени.

Кратковременное преобразование Фурье (STFT), используемое в этой статье, является наиболее классическим методом анализа в частотно-временной области. Кратковременное преобразование Фурье (STFT) — это связанное с преобразованием Фурье (FT) математическое преобразование для определения частоты и фазы синусоидальной волны в ее локальной области изменяющегося во времени сигнала. Его идея состоит в том, чтобы выбрать частотно-временную локализованную оконную функцию, предполагая, что оконная функция анализа h(t) является стационарной на коротком временном интервале, так что f(t)h(t) находится в различных конечных временных интервалах. Стабилизируйте сигнал для расчета спектра мощности в разное время. Кратковременное преобразование Фурье использует фиксированную оконную функцию, а наиболее часто используемыми оконными функциями являются окно Ханнинга, окно Хэмминга, окно Блэкмана-Хариса и так далее. В данной работе используется окно Хэмминга, представляющее собой разновидность косинусного окна, которое может хорошо отражать зависимость распада энергии от времени в определенный момент времени.

Следовательно, формула STFT в этой статье находится в исходной формуле преобразования Фурье

К формуле добавляется оконная функция, поэтому формула STFT преобразуется в

в,

является оконной функцией Хэмминга.

Рисунок 2.6 Преобразование STFT на основе окна Хэмминга

2.3 Мел-спектр

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

Шкала Мела, названная Стивенсом, Фолькманном и Ньюманом в 1937 году. Мы знаем, что единицей частоты является герц (Гц), а диапазон частот, который может слышать человеческое ухо, составляет 20-20000 Гц, но человеческое ухо не имеет линейной связи восприятия с единицей масштаба Гц. Например, если мы привыкаем к тону 1000 Гц, если частота тона увеличивается до 2000 Гц, наши уши могут только воспринимать, что частота немного увеличилась, но не могут воспринимать, что частота увеличилась вдвое. Если обычную шкалу частот преобразовать в шкалу частот Мела, соотношение отображения будет следующим:

После приведенной выше формулы восприятие частоты человеческим ухом становится линейной зависимостью [4]. То есть по шкале Мел, если частоты Мел двух речей различаются в два раза, то высота тона, которую может воспринимать человеческое ухо, примерно в два раза больше.

Давайте посмотрим на отображение от Гц к частоте Mel (Mel), так как они логарифмические, при малой частоте частота Mel меняется быстрее с Hz, когда частота большая, частота Mel растет очень быстро Медленно, наклон кривой мало. Это показывает, что человеческое ухо более чувствительно к низкочастотным тонам, а человеческое ухо очень глухо на высоких частотах, что вдохновлено набором фильтров Mel-scale. 

Рисунок 2.7 Принципиальная диаграмма зависимости частоты от частоты Mel

Как показано на рисунке ниже, 12 треугольных фильтров образуют банк фильтров.Фильтры на низких частотах плотные и пороговое значение велико, а фильтры на высоких частотах разрежены и пороговое значение низкое. Это как раз соответствует объективному закону, что чем выше частота, тем тупее человеческое ухо. Форма фильтра, показанная на рисунке выше, называется банком Mel-фильтров с такой же площадью банка, который широко используется в области человеческого голоса (распознавание речи, распознавание говорящего) и других областях.

Рисунок 2.8 Схематическая диаграмма блока фильтров Mel

2.4 Мел кепстр

Основываясь на логарифмическом спектре Mel 2,3, DCT-преобразование используется для разделения постоянной составляющей сигнала и синусоидальной составляющей сигнала, а окончательный результат называется кепстром Mel.

в

Поскольку вывод кепстра Мела представляет собой вектор, его нельзя отобразить на картинке, и его необходимо преобразовать в матрицу изображения. Диапазон выходного вектора, который должен бытьЛинейное преобразование по размеру изображения

Рисунок 2.9 Схематическая диаграмма цветовой шкалы чертежа

2.5 Оптимизация скорости обработки алгоритма

Поскольку алгоритм необходимо реализовать на стороне клиента, требуются определенные улучшения скорости [5]. Аспекты оптимизации следующие:

  1. Ускорение набора инструкций: поскольку алгоритм имеет большое количество матричных операций сложения и умножения, набор инструкций руки вводится для выполнения нескольких оптимизаций набора инструкций для ускорения операций. Скорость может быть увеличена в 4-8 раз [6].

  2. Ускорение алгоритма: I) Выберите полосу частот вокала (20 Гц ~ 20 кГц) и исключите полосу частот без голоса, чтобы уменьшить количество избыточных вычислений. II) Уменьшите частоту дискретизации звука.Поскольку человеческое ухо не чувствительно к чрезмерной частоте дискретизации, уменьшение частоты дискретизации может уменьшить количество ненужных вычислений данных. III) Разумное использование окон и нарезка для предотвращения чрезмерных вычислений. IV) Обнаружение тишины для сокращения ненужных сегментов времени.

  3. Ускорение частоты дискретизации: если частота дискретизации звука слишком высока, выберите понижение частоты дискретизации, а максимальная частота обработки устанавливается на 32 кГц.

  4. Многопоточное ускорение: разделите звук на несколько сегментов и используйте многопоточную параллельную обработку. И настроить количество потоков согласно возможностям машины, по умолчанию 4 потока.

Рисунок 2.10 Параметры, выбранные разработчиками алгоритма

3. Модель распознавания человеческого голоса

3.1 Выбор модели

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

В 1960-х Хьюбел и Визель обнаружили, что их уникальная сетевая структура может эффективно уменьшить сложность нейронных сетей с обратной связью, когда они изучали нейроны, используемые для локальной чувствительности и выбора направления в коре головного мозга кошек, а затем предложили сверточные нейронные сети. Теперь CNN стала одной из горячих точек исследований во многих научных областях, особенно в области классификации образов, поскольку сеть позволяет избежать сложной предварительной обработки изображения и может напрямую вводить исходное изображение, поэтому она используется более широко. . Новая машина распознавания, предложенная К. Фукусимой в 1980 г., была первой реализацией сверточной нейронной сети. Впоследствии другие исследователи улучшили сеть. Среди них типичным исследовательским достижением является «улучшенная когнитивная машина», предложенная Александром и Тейлором, которая сочетает в себе преимущества различных усовершенствованных методов и позволяет избежать трудоемкого обратного распространения ошибки.

Как правило, базовая структура CNN включает два слоя, один из которых является слоем выделения признаков, вход каждого нейрона связан с локальным рецептивным полем предыдущего слоя, и извлекаются локальные признаки. После того, как локальный признак извлечен, также определяется позиционное отношение между ним и другими признаками; второй слой — это слой отображения признаков, каждый вычислительный слой сети состоит из нескольких карт признаков, каждая карта признаков представляет собой плоскость, все нейроны в плоскости имеют равные веса. В структуре карты признаков используются такие функции, как сигмоид и relu с небольшими ядрами функций влияния, в качестве функции активации сверточной сети, так что карта признаков имеет инвариантность к смещению. Кроме того, поскольку нейроны на поверхности отображения имеют общие веса, количество свободных параметров сети уменьшается. За каждым сверточным слоем в сверточной нейронной сети следует вычислительный слой для локального усреднения и вторичного извлечения.Эта уникальная структура извлечения двойных признаков снижает разрешение признаков.

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

Рисунок 3.1 Модель Inception-v3

В данной работе в качестве модели для распознавания человеческого голоса выбрана высокоточная модель Inception-v3.Одним из важнейших улучшений v3 является декомпозиция.Сверточная сеть 7x7 декомпозируется на две одномерные свертки (1x7, 7x1) , и то же самое для 3х3 (1х3, 3х1), это преимущество может не только ускорить расчет, еще больше увеличить глубину сети, повысить нелинейность сети, и стоит отметить, что вход сети изменен с 224х224 до 299x299, более изысканный дизайн модулей 35x35/17x17/8x8.

С помощью модуля сеанса TensorFlow можно реализовать функции обучения и прогнозирования на уровне кода.Подробности см. на официальном сайте TensorFlow [7].

Рисунок 3.2 Схематическая диаграмма использования сеанса TensorFlow

3.2 Образцы моделей

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

Конкретные определения следующие:

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

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

Набор тестов: в основном для проверки способности обученной модели различать (скорость распознавания и т. Д.)

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

В этом документе в качестве обучающей среды используется TensorFlow, в качестве тестового набора выбрано 5000 образцов человеческого голоса и не-голоса, а в качестве проверочного набора — 1000 образцов.

3.3 Обучение модели

После того, как образцы подготовлены, их можно обучить с использованием модели Inception-v3. Когда модель обучения сходится, можно создать модель pb, которую можно использовать в конце. При выборе модели можно выбрать компиляцию armeabi-v7a или выше, чтобы включить оптимизацию NEON по умолчанию, то есть открыть макрос USE_NEON, который может добиться эффекта ускорения набора инструкций. Например, более половины операций сети CNN приходится на операции свертки (conv), которые можно ускорить как минимум в 4 раза с помощью оптимизации набора команд.

Рисунок 3.3 Функция обработки свертки

Затем создайте облегченную модель с помощью инструмента toco, предоставленного TensorFlow, который можно вызвать непосредственно на клиенте с помощью платформы TensorFlow Lite.

Рисунок 3.4 Интерфейс вызова инструмента toco

3.4 Предсказание модели

Извлекайте функции с помощью алгоритма Mel cepstral в звуковых файлах и создавайте прогнозируемые изображения. После этого облегченная модель, созданная в результате обучения, может быть использована для прогнозирования.Схематическая диаграмма результата прогнозирования выглядит следующим образом:

Рисунок 3.5 Результаты предсказания модели

использованная литература:

[1] https://www.tensorflow.org/mobile/tflite

[2] Исследование распознавания говорящих на основе MFCC и IMFCC [D], Лю Лиянь, Харбинский инженерный университет, 2008 г.

[3] Текстозависимый метод распознавания говорящего, основанный на MFCC и LPCC [J], Ю Мин, Юань Юцянь, Донг Хао, Ван Чжэ, Компьютерные приложения, 2006(04)

[4] Text dependent Speaker Identification in Noisy Enviroment[C]. Kumar Pawan,Jakhanwal Nitika,

Chandra Mahesh. International Conference on Devices and Communications . 2011

[5] https://github.com/weedwind/MFCC

[6] https://baike.baidu.com/item/набор инструкций ARM/907786?fr=aladdin

[7] https://www.tensorflow.org/api_docs/python/tf/Session

WebRTCon 2018 Шанхай, с нетерпением жду встречи с вами

Вслед за первой конференцией по аудио- и видеотехнологиям LiveVideoStackCon в 2017 году LiveVideoStack снова отправился в путь — WebRTCon 2018, который пройдет в мае в Шанхае.Это краткое изложение практики и применения технологии WebRTC за последние несколько лет.

WebRTCon 2018 подготовил основные доклады, WebRTC и внешний интерфейс, сессии отраслевых приложений, мониторинг тестирования и обеспечение обслуживания, разработку развлекательных мультимедиа и практику применения, углубленную разработку WebRTC, сессии решений, разработку серверов WebRTC, новые трансграничные технологии, WebRTC и Codec и т.п. спец. Пригласите более 30 ведущих мировых технических экспертов WebRTC, чтобы они представили участникам глобальную синхронизированную техническую практику и интерпретацию тенденций.