Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
Args:
explain (boolean): If True, write another text file that contain
the same information as the one within ubm_scores file but in a
readible way.
"""
############################# READING ############################
# Create Feature server
server = self.createFeatureServer()
# Read the index for the test datas
test_ndx = sidekit.Ndx.read(os.path.join(self.BASE_DIR, "task", "test_ndx.h5"))
# Read the UBM model
ubm = sidekit.Mixture()
model_name = "ubm_{}.h5".format(self.NUM_GAUSSIANS)
ubm.read(os.path.join(self.BASE_DIR, "ubm", model_name))
filename = "enroll_stat_{}.h5".format(self.NUM_GAUSSIANS)
enroll_stat = sidekit.StatServer.read(os.path.join(self.BASE_DIR, "stat", filename))
# MAP adaptation of enrollment speaker models
enroll_sv = enroll_stat.adapt_mean_map_multisession(ubm=ubm,
r=3 # MAP regulation factor
)
############################ Evaluating ###########################
# Compute scores
scores_gmm_ubm = sidekit.gmm_scoring(ubm=ubm,
enroll=enroll_sv,
ndx=test_ndx,
feature_server=server,
num_thread=self.NUM_THREADS
)
# Save the model's Score object
filename = "ubm_scores_{}.h5".format(self.NUM_GAUSSIANS)
scores_gmm_ubm.write(os.path.join(self.BASE_DIR, "result", filename))
outputPath = os.path.join(self.BASE_DIR, "ivector", filename)
fa = sidekit.FactorAnalyser(outputPath+".h5")
# Extract i-vectors from enrollment data
logging.info("Extracting i-vectors from enrollment data")
filename = 'enroll_stat_{}.h5'.format(self.NUM_GAUSSIANS)
enroll_stat = sidekit.StatServer.read(os.path.join(self.BASE_DIR, 'stat', filename))
enroll_iv = fa.extract_ivectors_single( ubm=ubm,
stat_server=enroll_stat,
uncertainty=False
)
# Extract i-vectors from test data
logging.info("Extracting i-vectors from test data")
filename = 'test_stat_{}.h5'.format(self.NUM_GAUSSIANS)
test_stat = sidekit.StatServer.read(os.path.join(self.BASE_DIR, 'stat', filename))
test_iv = fa.extract_ivectors_single(ubm=ubm,
stat_server=test_stat,
uncertainty=False
)
# Do cosine distance scoring and write results
logging.info("Calculating cosine score")
test_ndx = sidekit.Ndx.read(os.path.join(self.BASE_DIR, "task", "test_ndx.h5"))
scores_cos = sidekit.iv_scoring.cosine_scoring( enroll_iv,
test_iv,
test_ndx,
wccn=None
)
# Write scores
filename = "ivector_scores_cos_{}.h5".format(self.NUM_GAUSSIANS)
scores_cos.write(os.path.join(self.BASE_DIR, "result", filename))
This method is used to score our trained model.
"""
# Load UBM model
model_name = "ubm_{}.h5".format(self.NUM_GAUSSIANS)
ubm = sidekit.Mixture()
ubm.read(os.path.join(self.BASE_DIR, "ubm", model_name))
# Load TV matrix
filename = "tv_matrix_{}".format(self.NUM_GAUSSIANS)
outputPath = os.path.join(self.BASE_DIR, "ivector", filename)
fa = sidekit.FactorAnalyser(outputPath+".h5")
# Extract i-vectors from enrollment data
logging.info("Extracting i-vectors from enrollment data")
filename = 'enroll_stat_{}.h5'.format(self.NUM_GAUSSIANS)
enroll_stat = sidekit.StatServer.read(os.path.join(self.BASE_DIR, 'stat', filename))
enroll_iv = fa.extract_ivectors_single( ubm=ubm,
stat_server=enroll_stat,
uncertainty=False
)
# Extract i-vectors from test data
logging.info("Extracting i-vectors from test data")
filename = 'test_stat_{}.h5'.format(self.NUM_GAUSSIANS)
test_stat = sidekit.StatServer.read(os.path.join(self.BASE_DIR, 'stat', filename))
test_iv = fa.extract_ivectors_single(ubm=ubm,
stat_server=test_stat,
uncertainty=False
)
# Do cosine distance scoring and write results
logging.info("Calculating cosine score")