exponenta event banner

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

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

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

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

  • «да»

  • «нет»

  • вверх

  • «вниз»

  • «слева»

  • правильно

  • «вкл».

  • «выкл».

  • Стоп

  • «перейти»

Модель использует предварительно обученную сверточную сеть глубокого обучения. Подробные сведения об архитектуре этой сети и ее обучении см. в примере «Распознавание речевых команд с помощью глубокого обучения».

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

model = 'speechCommandRecognition';
open_system(model)

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

Используйте ручной переключатель для выбора прямого потока с микрофона или команд чтения, хранящихся в аудиофайлах. Для команд в файле используйте поворотный переключатель, чтобы выбрать одну из трех команд (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 в модели. Это гарантирует, что извлечение элементов, используемое в модели, совпадает с извлечением, используемым при обучении.

generateMATLABFunction(afe,'extractSpeechFeatures')

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

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

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

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

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

close_system(model,0)