exponenta event banner

определить

Идентификация метки

    Описание

    пример

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

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

    Примеры

    свернуть все

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

    [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 Изобретение относится к медицине и может быть использовано для выделения кепстральных коэффициентов гамматона (GTCC), дельты GTCC, дельты-дельты GTCC и шага из периодических окон Ганна 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