identify

    Описание

    пример

    tableOut = identify(ivs,data,scorer) идентифицирует метку, соответствующую data.

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

    Примеры

    свернуть все

    Используйте Базу данных переписи (также известный как Базу данных AN4) от CMU Robust Speech Recognition Group [1]. Набор данных содержит записи участников эксперимента и участниц эксперимента, произносящих слова и числа. Функция помощника в этом примере загружает набор данных для вас и преобразует необработанные файлы в 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 и тангаж из периодических окон Hann на 50 мс с перекрытием на 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 - Аудио Базы данных". 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