Маркируйте Spoken Words in Audio Signals Using External API

В этом примере показано, как пометить произносимые слова в Signal Labeler. Пример использует Речь IBM® Watson в текстовом программном обеспечении API и Audio Toolbox™. Смотрите Запись Речи в тексте (Audio Toolbox) для инструкций о:

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

  2. Подготовка Речевого API Уотсона IBM, предлагаемого через IBM Cloud Services. Необходимо создать учетную запись IBM Cloud, Речь в текстовом сервисном экземпляре, и перейти к сервисной инструментальной панели и скопировать учетные данные – значения URL и КЛЮЧ API. См. Начинающий Пример в документации IBM для получения дополнительной информации.

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

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

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

% To hear, type soundsc(y,fs)
  1. Открытый Signal Labeler. На вкладке Labeler нажмите Import и выберите From workspace в списке членов. В диалоговом окне выберите сигнал, y.

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

  3. Закройте диалоговое окно. Сигнал появляется в Помеченном Настроенном Браузере Сигнала.

Метка Define

Задайте метку, чтобы присоединить к сигналу. Нажмите Add Definition на вкладке Labeler. Задайте Маркировать Name как Words, выберите Label Type of ROI, и введите Тип данных как string.

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

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

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

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

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

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

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

  1. В Помеченном Настроенном Браузере Сигнала установите флажок рядом с y.

  2. Выберите Words в Маркировать браузере Definitions.

  3. На галерее Automated Value выберите stt.

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

Signal Labeler определяет местоположение и помечает произносимые слова.

Экспортируйте помеченный сигнал

Экспортируйте помеченный сигнал. На вкладке Labeler нажмите Export и выберите 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 Функция: найдите и идентифицируйте произносимые слова

Эта функция использует Речевой API Уотсона IBM и speech2text Audio Toolbox расширенная функциональность, чтобы извлечь произносимые слова из звукового файла.

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);

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

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

end

Смотрите также

Приложения

Объекты

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

Больше о