Идентификация метки
Используйте базу данных переписи (также известную как база данных 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 года.
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.
Типы данных: char | string
N - Число кандидатовЧисло кандидатов для возвращения tableOut, указывается как положительный скаляр.
Примечание
Если вы запрашиваете количество кандидатов больше, чем количество labels зачислены в i-векторную систему, затем возвращаются все кандидаты. Если не указано, количество кандидатов по умолчанию равно количеству зарегистрированных labels.
Типы данных: single | double
tableOut - Таблица достоверностиМетки-кандидаты и соответствующие оценки достоверности, возвращенные в виде таблицы. Количество строк tableOut равно N, количество кандидатов. Кандидаты рассортированы по степени доверия.
Типы данных: table
detectionErrorTradeoff | enroll | info | ivector | ivectorSystem | release | trainClassifier | trainExtractor | unenroll | verify
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.