Вычислительные Спектрограммы для базы данных - PullRequest
0 голосов
/ 16 марта 2020

Мне удалось вычислить несколько спектрограмм для большого речевого корпуса на MATLAB, используя следующий код, есть ли способ сделать подобное в python?

%Import and store audiofiles
    PathToDatabase='\\doozer.ads.warwick.ac.uk\User64\u\u1738748\Documents\MATLAB\ES327\HARVARD_Edited_EP_5s';
    datafolder = PathToDatabase;
    ads= audioDatastore( datafolder, 'IncludeSubfolders',true,...
    'FileExtensions','.wav',...
    'LabelSource','foldernames');
    ads0=copy(ads);

    %Split into training and test data, 80% for training. Display datastore
    [trainDatastore, testDatastore]=splitEachLabel(ads,0.80); 
    trainDatastore;
    trainDatastoreCount= countEachLabel(trainDatastore);
    testDatastore;
    testDatastoreCount= countEachLabel(testDatastore);

    %Preview content of Datastore
    [sampleTrain, infor] =read(trainDatastore);
    sound(sampleTrain, infor.SampleRate);
    reset(trainDatastore); % Set read pointer to original 

    %Speech spectrograms 
    % %speechspectrogram function computes the STFT of audio samples across
    % time %Length of clip specified as 5 in seconds, segment broken down into
    % %frames of 0.025 and the hopduration set at 0.010.numBands is the number
    % of...filters and equals the height of the spetrogram %These values can
    % bechanged and optimised wherever necessary.
    %Defining spectrogram parameters 
    segmentDuration = 5;
    frameDuration = 0.025;
    hopDuration = 0.010;
    numBands = 40;
    %Compute 
    epsil=1e-6;
    XTrain = Spectrogramtest(trainDatastore,segmentDuration,frameDuration,hopDuration,numBands);
    XTrain = log10(XTrain + epsil);
    XTest= Spectrogramtest(testDatastore,segmentDuration,frameDuration,hopDuration,numBands);
    XTest = log10(XTest + epsil);



    %Visualise Data 
    specMin = min(XTrain(:));
    specMax = max(XTrain(:));
    idx = randperm(size(XTrain,4),3);
    figure('Units','normalized','Position',[0.2 0.2 0.6 0.6]);
    for i = 1:3
        [x,fs] = audioread(trainDatastore.Files{idx(i)});
        subplot(2,3,i)
        plot(x)
        axis tight
        title(string(trainDatastore.Labels(idx(i))))
        subplot(2,3,i+3)
        spect = XTrain(:,:,1,idx(i));
        pcolor(spect)
        %caxis([specMin+2 specMax])
        shading flat
        sound(x,fs)
        pause(2)
    end
    '''

Моя проблема в том, что данные, выводимые в MATLAB, не могут быть визуализированы, и поэтому я изо всех сил пытаюсь изменить их для ввода в нейронную сеть для обучения. Однако я видел несколько примеров успешного выполнения прогнозирования временных рядов с помощью LSTM в python, и поэтому я надеюсь выполнить все в python.

...