Распознавание речевых команд в Simulink

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

Модель распознавания речевых команд

Модель распознает следующие речевые команды:

  • «да»

  • «нет»

  • вверх

  • «вниз»

  • «слева»

  • правильно

  • «on»

  • «off»

  • Стоп

  • «перейти»

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

Откройте модель.

model = 'speechCommandRecognition';
open_system(model)

Модель разбивает аудиопоток на сегменты с перекрытием на одну секунду. mel spectrogram вычисляется из каждого сегмента. Спектрограммы подают в предварительно обученную сеть.

Используйте переключатель вручную, чтобы выбрать прямой поток из микрофона или команды read, сохраненные в аудио файлов. Для команд в файле используйте переключатель поворота, чтобы выбрать одну из трех команд (Go, Yes и Stop).

Экстракция слуховой спектрограммы

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

Задайте параметры редукции данных. frameDuration - длительность каждой системы координат для вычисления спектра. hopDuration - временной шаг между каждым спектром. numBands количество фильтров в слуховой спектрограмме.

fs = 16000;
frameDuration = 0.025;
frameSamples = round(frameDuration*fs);
hopDuration = 0.010;
hopSamples = round(hopDuration*fs);
numBands = 50;

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

afe = audioFeatureExtractor( ...
    'SampleRate',fs, ...
    'FFTLength',512, ...
    'Window',hann(frameSamples,'periodic'), ...
    'OverlapLength',frameSamples - hopSamples, ...
    'barkSpectrum',true);

setExtractorParams(afe,'barkSpectrum','NumBands',numBands,'WindowNormalization',false);

Вызовите generateMATLABFunction, чтобы создать функцию редукции данных. Эта функция вызывается из Auditory Spectrogram Блок MATLAB function в модели. Это гарантирует, что редукция данных, используемая в модели, совпадает с экстракцией, используемой в обучении.

generateMATLABFunction(afe,'extractSpeechFeatures')

Запустите модель

Моделируйте модель в течение 20 секунд. Чтобы запустить модель бессрочно, установите время остановки в Inf.

set_param(model,'StopTime','20');
sim(model);

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

Закройте модель.

close_system(model,0)