Skip to content

kaa13051996/speech_rec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект speech_recognition

Описание проекта

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

  • 20 дикторов (10м+10ж);
  • 40 аудиозаписей каждого диктора для обучения;
  • 10 аудиозаписей каждого диктора для тестирования.
    Речевой корпус для извлечения признаков из спектрограмм:
  • 20+30 дикторов;
  • 40/-/10 + 30/10/10 для обучения/валидации/тестирования.
    Проект выполнен на Python 3.6.8.

Краткое описание каталогов проекта

  1. data/

    • ready_to_use/
    • signs_csv/
    • signs_htk/
    • signs_matlab/
    • signs_wav/
  2. src/

Data

Каталог для хранения признаков:

  • в виде матрицы признаков, где строка - наблюдение, столбец - признак (ready_to_use/);
  • в виде файлов, где файл вида 1 (50).htk хранит вектор признаков (из одного наблюдения) 1-ого диктора, извлеченный из 50-ой аудиозаписи (фразы).

Форматы для сохранения в виде матрицы: .npy (для структуры данных - numpy array), .pickle (для структуры данных - list).
Форматы для сохранения в виде отдельных файлов: .csv, .matlab, .htk (csv и matlab удобны для просмотра; почти одинаковы, разница в еще одной строке заголовков).
Исходные аудиозаписи должны храниться в signs_wav/

PS: написать про отсутствующие файлы

Code

Каталог для основных классов:

  • Classification.py: для решения задачи верификации (используется нормализация, разделение данных на обучающую и тестовую выорки, проводится балансировка и перемешивание, в зависимости от выбранных параметров);
  • DNN.py: сверточная нейронная сеть для решения задачи идентификации (также проводится нормализация, пермешивание; есть возможность использования генератора и работы со списком признаков - трехмерный, а не матрица, с разным количеством значений по оси времени);
  • DNN_50.py: тоже самое, что и DNN.py только для 50, а не 20 дикторов и с другим разделением на обучающую, валидационную и тестовую выборки, другой алгоритм формирование меток принадлежности наблюдения диктору;
  • ItemStacking.py: для реализации стекинга, а также некоторых экспериментов (при прогоне экспериментов с различными параметрами (нормализации, балансировки, перемешивания) стоит сначала собрать результаты нескольких классификаторов без балансировки и пермешивания, а потом уже на общей матрице применить);
  • Model: собирается модель диктора (считывается матрица признаков из файла в ready_to_use/ или из каждого файла (1 (1).htk - 1 (50).htk к примеру, для 1 диктора) и собирается в одну матрицу, также формируется столбец меток);
  • Speaker.py: нужен для того, чтобы собирать информацию по каждому отдельному диктору.

Const

Каталог для хранения файлов с константами:

  • classifiers.py хранит параметры и настройки каждого классификатора;
  • extensions.py хранит расширения для сохранения в файл признаков;
  • metrics.py хранит переменные для дальнейшего вызова функций, рассчитывающих выбранную метрику;
  • network_arch.py хранит функции архитектур для нейронной сети;
  • paths.py содержит пути к нужным файлам и каталогам;
  • scripts.py содержит параметры для сценария запуска программы (откуда брать признаки, какого они формата, какую функцию считывания использовать, есть ли уже сохраненные признаки в отдельном файле, список дикторов и т.д.);
  • settings_for_generator.py содержит класс для расчета параметров нейронной сети, таких как количество эпох, итераций, размер batch_size, исходя из уже заданных параметров.

Experiments

Каталог с файлами, реализующими эксперименты с:

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

Logs

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

Save

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

Scripts

Содержит файлы для запуска следующих сценариев:

  • извлечение признаков из сверточной нейронной сети (extract_features);
  • использование извлеченных признаков из сверточной нейронной сети в качестве признаков для дальнейшей верификации;
  • использование спектрограммы для обучение нейронной сети;
  • запуск стекинга.

Utils

Содержит утилиты, для:

  • визуализации;
  • загрузки сохраненных моделей, сетей, признаков;
  • препроцессинга данных (нормализация, балансировка, перемешивание, разделение данных на 2 группы);
  • чтения признаков форматов .csv, .htk, .matlab;
  • чтения спектрограмм из аудиозаписей формата wav;
  • сохранения моделей, сетей, признаков, графиков;
  • расчета метрик (EER, accuracy и сбалансированная accuracy на основе предсказанной и целевой столбцов меток).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages