def predict(args): assets = AssetManager(args.base_dir) storage = PredictionStorage( assets.create_prediction_storage(args.model, args.data_name)) # Change path of args.model manually network = SpeechEnhancementNetwork.load( assets.get_model_cache_path(args.model)) with open(assets.get_normalization_cache_path(args.model), 'rb') as normalization_fd: video_normalizer = pickle.load(normalization_fd) try: video_normalizer.normalize(extract_frames("data")) predicted_speech_spectrograms = network.predict( extract_audio()[1], extract_frames("data")) predicted_speech_signal = data_processor.reconstruct_speech_signal( extract_audio()[0], predicted_speech_spectrograms, 30) predicted_speech_signal.save_to_wav_file("enhanced.wav") except Exception: logging.exception("failed to predict %s. skipping" % "test")
def predict(args): assets = AssetManager(args.base_dir) storage = PredictionStorage( assets.create_prediction_storage(args.model, args.data_name) ) network = SpeechEnhancementNetwork.load(assets.get_model_cache_path(args.model)) with open( assets.get_normalization_cache_path(args.model), "rb" ) as normalization_fd: video_normalizer = pickle.load(normalization_fd) samples = load_preprocessed_blob(assets.get_preprocessed_blob_path(args.data_name)) for sample in samples: try: print( "predicting (%s, %s)..." % (sample.video_file_path, sample.noise_file_path) ) video_normalizer.normalize(sample.video_samples) loss = network.evaluate( sample.mixed_spectrograms, sample.video_samples, sample.speech_spectrograms, ) print("loss: %f" % loss) predicted_speech_spectrograms = network.predict( sample.mixed_spectrograms, sample.video_samples ) predicted_speech_signal = data_processor.reconstruct_speech_signal( sample.mixed_signal, predicted_speech_spectrograms, sample.video_frame_rate, ) storage.save_prediction(sample, predicted_speech_signal) except Exception: logging.exception("failed to predict %s. skipping" % sample.video_file_path)
def predict(self, predict_queue, play_queue, lock): with lock: print("*Start Predict*\n") counter = 0 while True: video_data, mixed_signal, mixed_spectrograms, video_slice_number, audio_slice_number = predict_queue.get( ) # Spectrogram Test # self.collect_frames_for_saving(mixed_signal, self.save_original, object_flag=False) # after_spectrograms = reconstruct_speech_signal(mixed_signal, mixed_spectrograms, self.fps) # self.collect_frames_for_saving(after_spectrograms, self.save_signal, object_flag=True) counter += 1 try: predicted_speech_spectrograms = self.network.predict( mixed_spectrograms, video_data) predicted_speech_signal = reconstruct_speech_signal( mixed_signal, predicted_speech_spectrograms, self.fps) self.collect_frames_for_saving(predicted_speech_signal, self.save_predicted, object_flag=True) play_queue.put((predicted_speech_signal, video_slice_number, audio_slice_number)) if (video_slice_number == 0 and predict_queue.empty()) or\ (audio_slice_number == 0 and predict_queue.empty()): with lock: print("*Predict queue is empty*\n") print("Predict: " + str(counter)) predict_queue.close() break except Exception: logging.exception("Failed to predict")