Метка Identify
Используйте Базу данных переписи (также известный как Базу данных 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.
ivs — система i-вектораivectorSystem объектсистема i-вектора в виде объекта типа ivectorSystem.
data — Данные, чтобы идентифицироватьДанные, чтобы идентифицировать в виде вектор-столбца, представляющего одноканальный (моно) звуковой сигнал или матрицу функций аудио.
Если InputType установлен в 'audio' когда система i-вектора создается, data должен быть вектор-столбец с базовым типом single или double.
Если InputType установлен в 'features' когда система i-вектора создается, data должна быть матрица с базовым типом single или double. Матрица должна состоять из функций аудио, где количество функций (столбцы) заблокировано в первый раз trainExtractor называется и количество транзитных участков (строки) переменного размера.
Типы данных: single | double
scorer — Выигрыш алгоритма'plda' | 'css'Выигрыш алгоритма используется системой i-вектора в виде 'plda', который соответствует вероятностному линейному дискриминантному анализу (PLDA) или 'css', который соответствует счету подобия косинуса (CSS).
Использовать 'plda', необходимо обучить использование модели PLDA trainClassifier. Если модель PLDA была обучена, то scorer значения по умолчанию к 'plda'. В противном случае, значения по умолчанию маркера к 'css'.
Типы данных: char | string
N — Количество кандидатовКоличество кандидатов, чтобы возвратиться в tableOutВ виде положительной скалярной величины.
Примечание
Если вы запрашиваете много кандидатов, больше, чем количество labels зарегистрированный в системе i-вектора, затем все кандидаты возвращены. Если незаданный, количество значений по умолчанию кандидатов к количеству зарегистрированного labels.
Типы данных: single | double
tableOut — Таблица ScoreМарки кандидата и соответствующие баллы, возвращенные как таблица. Количество строк tableOut равно N, количество кандидатов. Кандидаты сортируются в порядке доверия.
Типы данных: table
trainExtractor | trainClassifier | unenroll | enroll | detectionErrorTradeoff | verify | ivector | info | addInfoHeader | release | ivectorSystem | speakerRecognition
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.