exponenta event banner

Маркировка произносимых слов в аудиосигналах с использованием внешнего API

В этом примере показано, как маркировать произносимые слова в Signal Labeler. В примере используется программное обеспечение IBM ® Watson Speech to Text API и Audio Toolbox™. Инструкции по следующим вопросам см. в разделе Транскрипция речи в текст (панель звуковых инструментов):

  1. Загрузка панели инструментов Audio Toolbox speech2text расширенные функциональные возможности, доступные в MATLAB ® Central.

  2. Настройка IBM Watson Speech API, предоставляемого через IBM Cloud Services. Необходимо создать учетную запись IBM Cloud, экземпляр службы «Речь в текст» и перейти на панель мониторинга службы и скопировать учетные данные - ключ API и значения URL. Дополнительные сведения см. в Руководстве по началу работы в документации IBM.

Загрузить речевые данные

Загрузите файл аудиоданных, содержащий предложение «Дуб силен, а также придает оттенок», произносимый мужским голосом. Дискретизация сигнала производится на частоте 44,1 кГц.

[y,fs] = audioread('oak.m4a');

% To hear, type soundsc(y,fs)
  1. Открыть маркировщик сигналов. На вкладке «Маркировщик» нажмите кнопку «Импорт» и выберите From workspace в списке Участники. В диалоговом окне выберите сигнал, y.

  2. Добавить информацию о времени: Выбрать Time из раскрывающегося списка и указать fs в качестве частоты дискретизации, которая измеряется в кГц.

  3. Закройте диалоговое окно. Сигнал появляется в браузере набора маркированных сигналов.

Определение метки

Определите метку для присоединения к сигналу. Щелкните Добавить определение (Add Definition) на вкладке Маркировщик (Labeler). Укажите имя метки как Words, выберите тип метки ROIи введите тип данных как string.

Создание пользовательской функции автоматической маркировки

Создайте пользовательскую функцию для маркировки слов, произносимых в аудиофайле. (Код для stt функция появится позже в примере.) Дополнительные сведения см. в разделе Пользовательские функции маркировки.

  1. Перейдите в каталог, в котором был сохранен файл speech2text Файлы P-кода и JSON-файл, в котором хранятся учетные данные IBM Cloud.

  2. Чтобы создать функцию, на вкладке Маркировщик щелкните Автоматизировать значение (Automate Value) и выберите Добавить пользовательскую функцию (Add Custom Function). Signal Labeler отображает диалоговое окно с запросом на ввод имени, описания и типа метки добавляемой функции. Войти stt в поле Имя и выберите ROI в качестве типа метки. Поле Описание можно оставить пустым или ввести собственное описание.

  3. Скопируйте код функции и вставьте его в появившийся пустой шаблон. Сохраните файл. Функция появится в галерее.

Поиск и идентификация произносимых слов

Найдите и идентифицируйте слова, произнесенные во входном сигнале.

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

  2. Выбрать Words в браузере «Определения меток».

  3. В галерее «Автоматизированные значения» выберите stt.

  4. Щелкните Автомаркировка (Auto-Label) и выберите Auto-Label All Signals. Нажмите кнопку ОК в появившемся диалоговом окне.

Signal Labeler находит и маркирует произнесенные слова.

Экспорт маркированного сигнала

Экспортируйте маркированный сигнал. На вкладке «Маркировщик» нажмите кнопку «Экспорт» и выберите Labeled Signal Set To File. В появившемся диалоговом окне введите имя Transcription.mat в набор маркированных сигналов и добавить дополнительное краткое описание. Щелкните Экспорт (Export).

Вернитесь в командное окно MATLAB ®. Загрузите набор маркированных сигналов. Набор имеет только один элемент. Получите имена меток и используйте имя для получения и отображения транскрибированных слов.

load Transcription

ln = getLabelNames(transcribedAudio);

v = getLabelValues(transcribedAudio,1,ln)
v=7×2 table
     ROILimits       Value  
    ____________    ________

    0.09    0.56    "oak"   
    0.59    0.97    "is"    
       1    1.78    "strong"
    1.94    2.19    "and"   
    2.22    2.67    "also"  
    2.67    3.22    "gives" 
    3.25    3.91    "shade" 

Измените значения меток со строк на категории. Использовать signalMask объект для построения графика сигнала с использованием различных цветов для каждого слова.

v.Value = categorical(v.Value,v.Value);

msk = signalMask(v,'SampleRate',fs);

s = getSignal(transcribedAudio,1);

plotsigroi(msk,s.y)

stt Функция: Поиск и идентификация произносимых слов

Эта функция использует IBM Watson Speech API и Audio Toolbox speech2text расширение функциональных возможностей для извлечения произносимых слов из аудиофайла.

function [labelVals,labelLocs] = stt(x,t,parentLabelVal,parentLabelLoc,varargin)

aspeechObjectIBM = speechClient('IBM','timestamps',true);

fs = 1/(t(2)-t(1));

tixt = speech2text(aspeechObjectIBM,x,fs);

numLabels = numel(tixt.TimeStamps{:});
labelVals = strings(numLabels,1);
labelLocs = zeros(numLabels,2);

for idx = 1:numLabels
    labelVals(idx) = tixt.TimeStamps{:}{idx}{1};
    labelLocs(idx,1) = tixt.TimeStamps{:}{idx}{2};
    labelLocs(idx,2) = tixt.TimeStamps{:}{idx}{3};
end

end

См. также

Приложения

Объекты

Связанные примеры

Подробнее