Метка 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.