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