identify

    Описание

    пример

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

    пример

    tableOut = identify(ivs,data,scorer) указывает, что маркер раньше выполнял идентификацию.

    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'
            FeatureVectorLength: 40
    
       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. Если модель PLDA была обучена, то scorer значения по умолчанию к 'plda'. В противном случае, значения по умолчанию маркера к 'css'.

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

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

    Примечание

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

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

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

    свернуть все

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

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

    Введенный в R2021a