Распознавание голоса
Yandex DataSphere позволяет строить модели машинного обучения, используя интерфейс Jupyter Notebook. Познакомьтесь с решением задачи распознавания спикера по голосу с помощью моделирования речевых сигналов числовыми признаками:
- Установите зависимости.
- Выполните загрузку данных и извлечение признаков.
- Обучите модель на голосовых данных.
- Получите результаты предсказания признаков на тестовых данных.
Перед началом работы
-
Создайте проект в DataSphere и откройте его.
-
Склонируйте Git-репозиторий, в котором находится подготовленный ноутбук с набором данных:
https://github.com/donkrasnov/webinar0813_gbc_yandex
Дождитесь, когда клонирование завершится, это может занять некоторое время. После завершения операции в блоке File Browser появится каталог склонированного репозитория.
-
Откройте каталог webinar0813_gbc_yandex и ознакомьтесь с содержимым ноутбука webinar-yandex-gbc.ipynb. В начале ноутбука кратко изложены основные принципы моделирования речевого сигнала аудио-признаками.
Примечание
Если вы обновите вкладку браузера, на которой запущен ноутбук, или закроете ее, то состояние ноутбука сохранится. Переменные и результаты уже сделанных вычислений при этих действиях не сбрасываются.
Установите зависимости
-
Выделите все ячейки с кодом в разделе Установка и импорт необходимых пакетов, удерживая Shift и нажимая слева от нужных ячеек:
%pip install numba==0.48.0 %pip install librosa %pip install cffi==1.14.2 %pip show numba import time import os from tqdm import tqdm ...
-
Запустите выделенные ячейки, выбрав в меню Run → Run Selected Cells (также можно использовать сочетание клавиш Shift+Enter).
-
Дождитесь завершения операции.
Часть пакетов уже установлена и импортируется с помощью команды import
, часть устанавливается с помощью команды %pip install
и затем импортируется. Полный список предустановленных в DataSphere пакетов см. в разделе Список предустановленного ПО.
Загрузите набор данных из звуковых файлов
Перейдите к разделу Генерация аудио-признаков. В нем выполняются следующие операции:
- Определяется функция для извлечения аудио-признаков из набора данных (используется библиотека
librosa
). - Загружается тестовый набор коротких десятисекундных аудио-фрагментов. С помощью этой функции извлекаются аудио-признаки. Так как данные распределены по папкам, относящимся к разным спикерам, можно однозначно сопоставить набору признаков конкретного спикера.
- Полученный массив признаков нормируется.
Чтобы выполнить загрузку и обработку данных:
- Выделите все ячейки с кодом в разделе Генерация аудио-признаков и запустите их.
- Дождитесь завершения операции.
Обучите модель на голосовых данных
Перейдите к ячейке с кодом обучения моделей в разделе Обучение моделей. В данной ячейке в цикле по каждому спикеру выполняются следующие операции:
- Модель обучается на фрагментах его речи.
- Модуль
pickle
выполняет сохранение объекта обученной модели в файл в папке./speaker-models
.
Чтобы обучить модель:
-
Добавьте
!#M
в начало ячейки для изменения конфигурации ресурсов, так как обучение модели — это ресурсоемкая операция:#!M start = time.time() features_smpl = pd.DataFrame() count = 1 ...
-
Запустите ячейку.
-
Дождитесь завершения операции.
Получите результаты предсказания признаков на тестовых данных
Перейдите к разделу Тестирование на тестовом семпле. В нем выполняются следующие операции:
- Загружаются обученные модели из файлов
pickle
. - Выполняется загрузка и обработка аудио-файлов из тестового датасета подобно тому, как это делалось для обучающего набора.
- Каждая модель предсказывает спикера по признакам.
- Наилучший результат предсказания определяет выбор спикера.
- Отображается точность определения выбранного в тесте спикера.
Чтобы получить результаты тестирования:
- Выделите ячейку в разделе Тестирование на тестовом семпле.
- Запустите ячейку.
- Дождитесь завершения операции.
- Убедитесь, что полученная точность определения спикера не менее 98%.
Примечание
Вы можете поделиться готовым ноутбуком с расчетами или экспортировать проект целиком.