identify

Идентифицируйте метку

    Описание

    пример

    tableOut = identify(ivs,data,scorer) определяет метку, соответствующую data.

    tableOut = identify(___,'NumCandidates',N) задает количество кандидатов для возвращения в tableOut.

    Примеры

    свернуть все

    Используйте базу данных переписи населения (также известную как AN4 Database) из группы распознавания робастной речи CMU [1]. Набор данных содержит записи мужских и женских субъектов, говорящих слова и цифры. Функция helper в этом примере загружает набор данных для вас и преобразует необработанные файлы в FLAC и возвращает два audioDatastore объекты, содержащие обучающий и тестовый наборы. По умолчанию набор данных сокращается так, что пример запускается быстро. Можно использовать полный набор данных путем установки ReduceDataset на ложь.

    [adsTrain,adsTest] = HelperAN4Download('ReduceDataset',true);

    Разделите набор тестовых данных на наборы регистрации и тестирования. Используйте два слова для регистрации и оставшиеся для тестового набора. Как правило, чем больше высказываний вы используете для регистрации, тем лучше эффективность системы. Однако большинство практических приложений ограничены небольшим набором заявлений о зачислении.

    [adsEnroll,adsTest] = splitEachLabel(adsTest,2);

    Смотрите распределение динамиков в наборах обучения, тестирования и регистрации. Динамики в наборе обучающих данных не перекрываются с динамиками в тесте и регистрируются наборами.

    summary(adsTrain.Labels)
         fejs      13 
         fmjd      13 
         fsrb      13 
         ftmj      13 
         fwxs      12 
         mcen      13 
         mrcb      13 
         msjm      13 
         msjr      13 
         msmn       9 
    
    summary(adsEnroll.Labels)
         fvap      2 
         marh      2 
    
    summary(adsTest.Labels)
         fvap      11 
         marh      11 
    

    Создайте i-векторную систему, которая принимает вход функции.

    fs = 16e3;
    iv = ivectorSystem('SampleRate',fs,'InputType','features');

    Создайте audioFeatureExtractor возразите, чтобы извлечь gammatone cepstral коэффициенты (GTCC), дельта GTCC, дельта дельты GTCC и тангаж с 50 мс периодические окна Hann с 45 наложениями мс.

    afe = audioFeatureExtractor('gtcc',true,'gtccDelta',true,'gtccDeltaDelta',true,'pitch',true,'SampleRate',fs);
    afe.Window = hann(round(0.05*fs),'periodic');
    afe.OverlapLength = round(0.045*fs);
    afe
    afe = 
      audioFeatureExtractor with properties:
    
       Properties
                         Window: [800×1 double]
                  OverlapLength: 720
                     SampleRate: 16000
                      FFTLength: []
        SpectralDescriptorInput: 'linearSpectrum'
    
       Enabled Features
         gtcc, gtccDelta, gtccDeltaDelta, pitch
    
       Disabled Features
         linearSpectrum, melSpectrum, barkSpectrum, erbSpectrum, mfcc, mfccDelta
         mfccDeltaDelta, spectralCentroid, spectralCrest, spectralDecrease, spectralEntropy, spectralFlatness
         spectralFlux, spectralKurtosis, spectralRolloffPoint, spectralSkewness, spectralSlope, spectralSpread
         harmonicRatio
    
    
       To extract a feature, set the corresponding property to true.
       For example, obj.mfcc = true, adds mfcc to the list of enabled features.
    
    

    Создайте преобразованные хранилища данных путем добавления редукции данных в read функция adsTrain и adsEnroll.

    trainLabels = adsTrain.Labels;
    adsTrain = transform(adsTrain,@(x)extract(afe,x));
    enrollLabels = adsEnroll.Labels;
    adsEnroll = transform(adsEnroll,@(x)extract(afe,x));

    Обучите и экстрактор, и классификатор с помощью набора обучающих данных.

    trainExtractor(iv,adsTrain, ...
        'UBMNumComponents',64, ...
        'UBMNumIterations',5, ...
        'TVSRank',32, ...
        'TVSNumIterations',3);
    Calculating standardization factors ....done.
    Training universal background model ........done.
    Training total variability space ...done.
    i-vector extractor training complete.
    
    trainClassifier(iv,adsTrain,trainLabels, ...
        'NumEigenvectors',16, ...
        ...
        "PLDANumDimensions",16, ...
        "PLDANumIterations",5);
    Extracting i-vectors ...done.
    Training projection matrix .....done.
    Training PLDA model ........done.
    i-vector classifier training complete.
    

    Зарегистрируйте докладчиков из набора регистрации.

    enroll(iv,adsEnroll,enrollLabels)
    Extracting i-vectors ...done.
    Enrolling i-vectors .....done.
    Enrollment complete.
    

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

    numCorrect = 0;
    reset(adsTest)
    for index = 1:numel(adsTest.Files)
        features = extract(afe,read(adsTest));
        
        results = identify(iv,features,'plda');
        
        trueLabel = adsTest.Labels(index);
        predictedLabel = results.Label(1);
        isPredictionCorrect = trueLabel==predictedLabel;
        
        numCorrect = numCorrect + isPredictionCorrect;
    end
    fprintf('File Accuracy: %0.2f percent\n', 100*numCorrect/numel(adsTest.Files))
    File Accuracy: 100.00 percent
    

    Ссылки

    [1] «CMU Sphinx Group - Audio Databases». http://www.speech.cs.cmu.edu/databases/an4/. Доступ к 19 декабря 2019.

    Входные параметры

    свернуть все

    i-векторная система, заданная как объект типа ivectorSystem.

    Данные для идентификации, заданные как вектор-столбец, представляющая одноканальный (моно) аудиосигнал или матрицу аудиосигнала функций.

    • Если InputType установлен в 'audio' когда i-векторная система создается, data должен быть вектором-столбцом с базовым типом single или double.

    • Если InputType установлен в 'features' когда i-векторная система создается, data должна быть матрицей с базовым типом single или double. Матрица должна состоять из аудио функций, где количество функций (столбцов) блокируется с первого раза trainExtractor вызывается, и количество переходов (строк) изменяется.

    Типы данных: single | double

    Алгоритм оценки, используемый i-векторной системой, заданный как 'plda', что соответствует вероятностному линейному дискриминантному анализу (PLDA), или 'css', что соответствует счету косинусоидальности (CSS).

    Примечание

    Как использовать 'plda', вы должны обучить модель PLDA используя trainClassifier.

    Типы данных: char | string

    Количество кандидатов для возвращения в tableOut, заданный как положительная скалярная величина.

    Примечание

    Если вы запрашиваете количество кандидатов, больше, чем количество labels зачислен в i-векторную систему, затем возвращаются все кандидаты. Если не задано, количество кандидатов по умолчанию равняется количеству зарегистрированных labels.

    Типы данных: single | double

    Выходные аргументы

    свернуть все

    Метки кандидата и соответствующие оценки достоверности, возвращенные как таблица. Количество строк tableOut равно N, количество кандидатов. Кандидаты сортируются в порядке доверия.

    Типы данных: table

    Введенный в R2021a