hello, sorry for the late reply.
i solved the above problem. the cause was 'bio_object' parameter.
i used 'BioFile' object , but it was not an object suitable for 'Spear'
an object suitable for spear is 'AudioBioFile' object.
i attach a part of the code that i solved.
class Bobspear(object):
def __init__(self, audio_name, directory="./"):
self.audio_name = audio_name
self.directory = directory
self.preprocessor, self.extractor, self.algorithm = self._load_resource()
self.init_time = time.time()
def _load_resource(self):
preprocessor = utils.load_resource("energy-2gauss", "preprocessor")
extractor = utils.load_resource("mfcc-60", "extractor")
algorithm = utils.load_resource("gmm-voxforge", "algorithm")
algorithm.load_projector(self.directory + TEMP_PATH +"Projector.hdf5")
return preprocessor, extractor, algorithm
def _get_preprocessed_data(self, bio_object, directory, extension=".wav"):
preprocessed = self.preprocessor.read_original_data(bio_object, directory, extension)
return preprocessed
def _write_feature(self, anotations=None):
preprocessed = self._get_preprocessed_data(AudioBioFile(1, self.audio_name, self.audio_name), self.directory)
extracted = self.extractor(self.preprocessor(preprocessed, anotations))
self.extractor.write_feature(extracted, self.directory+"output.hdf5")
def _compute_score(self):
models, probes = {}, {}
models_list = list()
model_files = [self.directory + MODEL_PATH + dir for dir in os.listdir(self.directory + MODEL_PATH)]
probe_files = [self.directory + "output.hdf5"]
for m in model_files:
models[m] = self.algorithm.read_model(m)
models_list.append(models[m])
for p in probe_files:
probes[p] = self.extractor.read_feature(p)
for p in probe_files:
probes[p] = self.algorithm.project(probes[p])
result = 0.0
for p in probe_files:
for m in model_files:
score = self.algorithm.score(models[m], probes[p])
result = score if score > result else result
return result
the result of this code return scores for one wave file(probe file).
thank you for your reply