INCLUDES += \ -I$(MAKEFILE_DIR)/downloads/kissfft GENERATED_PROJECT_INCLUDES += \ -I./third_party/kissfft PROJECT_INCLUDES += \ third_party/kissfft KISSFFT_LIB_SRCS := \ $(MAKEFILE_DIR)/downloads/kissfft/kiss_fft.c \ $(MAKEFILE_DIR)/downloads/kissfft/tools/kiss_fftr.c KISSFFT_LIB_HDRS := \ $(MAKEFILE_DIR)/downloads/kissfft/COPYING \ $(MAKEFILE_DIR)/downloads/kissfft/kiss_fft.h \ $(MAKEFILE_DIR)/downloads/kissfft/_kiss_fft_guts.h \ $(MAKEFILE_DIR)/downloads/kissfft/tools/kiss_fftr.h $(eval $(call add_third_party_download,$(KISSFFT_URL),$(KISSFFT_MD5),kissfft,patch_kissfft)) THIRD_PARTY_CC_HDRS += \ third_party/kissfft/COPYING \ third_party/kissfft/kiss_fft.h \ third_party/kissfft/_kiss_fft_guts.h \ third_party/kissfft/tools/kiss_fftr.h MICRO_SPEECH_TEST_SRCS := \ tensorflow/lite/micro/examples/micro_speech/micro_speech_test.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/no_micro_features_data.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/yes_micro_features_data.cc MICRO_SPEECH_TEST_HDRS := \ tensorflow/lite/micro/examples/micro_speech/micro_features/no_micro_features_data.h \ tensorflow/lite/micro/examples/micro_speech/micro_features/yes_micro_features_data.h \ SIMPLE_FEATURES_GENERATOR_TEST_SRCS := \ tensorflow/lite/micro/examples/micro_speech/simple_features/simple_features_generator.cc \ tensorflow/lite/micro/examples/micro_speech/simple_features/simple_features_generator_test.cc \ tensorflow/lite/micro/examples/micro_speech/simple_features/no_power_spectrum_data.cc \ tensorflow/lite/micro/examples/micro_speech/simple_features/yes_power_spectrum_data.cc SIMPLE_FEATURES_GENERATOR_TEST_HDRS := \ tensorflow/lite/micro/examples/micro_speech/simple_features/simple_model_settings.h \ tensorflow/lite/micro/examples/micro_speech/simple_features/simple_features_generator.h \ tensorflow/lite/micro/examples/micro_speech/simple_features/no_power_spectrum_data.h \ tensorflow/lite/micro/examples/micro_speech/simple_features/yes_power_spectrum_data.h MICRO_FEATURES_LIB_SRCS := \ tensorflow/lite/experimental/microfrontend/lib/fft.cc \ tensorflow/lite/experimental/microfrontend/lib/fft_util.cc \ tensorflow/lite/experimental/microfrontend/lib/filterbank.c \ tensorflow/lite/experimental/microfrontend/lib/filterbank_util.c \ tensorflow/lite/experimental/microfrontend/lib/frontend.c \ tensorflow/lite/experimental/microfrontend/lib/frontend_util.c \ tensorflow/lite/experimental/microfrontend/lib/log_lut.c \ tensorflow/lite/experimental/microfrontend/lib/log_scale.c \ tensorflow/lite/experimental/microfrontend/lib/log_scale_util.c \ tensorflow/lite/experimental/microfrontend/lib/noise_reduction.c \ tensorflow/lite/experimental/microfrontend/lib/noise_reduction_util.c \ tensorflow/lite/experimental/microfrontend/lib/pcan_gain_control.c \ tensorflow/lite/experimental/microfrontend/lib/pcan_gain_control_util.c \ tensorflow/lite/experimental/microfrontend/lib/window.c \ tensorflow/lite/experimental/microfrontend/lib/window_util.c \ $(KISSFFT_LIB_SRCS) MICRO_FEATURES_LIB_HDRS := \ tensorflow/lite/experimental/microfrontend/lib/bits.h \ tensorflow/lite/experimental/microfrontend/lib/fft.h \ tensorflow/lite/experimental/microfrontend/lib/fft_util.h \ tensorflow/lite/experimental/microfrontend/lib/filterbank.h \ tensorflow/lite/experimental/microfrontend/lib/filterbank_util.h \ tensorflow/lite/experimental/microfrontend/lib/frontend.h \ tensorflow/lite/experimental/microfrontend/lib/frontend_util.h \ tensorflow/lite/experimental/microfrontend/lib/log_lut.h \ tensorflow/lite/experimental/microfrontend/lib/log_scale.h \ tensorflow/lite/experimental/microfrontend/lib/log_scale_util.h \ tensorflow/lite/experimental/microfrontend/lib/noise_reduction.h \ tensorflow/lite/experimental/microfrontend/lib/noise_reduction_util.h \ tensorflow/lite/experimental/microfrontend/lib/pcan_gain_control.h \ tensorflow/lite/experimental/microfrontend/lib/pcan_gain_control_util.h \ tensorflow/lite/experimental/microfrontend/lib/window.h \ tensorflow/lite/experimental/microfrontend/lib/window_util.h \ $(KISSFFT_LIB_HDRS) MICRO_FEATURES_GENERATOR_SRCS := \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_features_generator.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_model_settings.cc \ $(MICRO_FEATURES_LIB_SRCS) MICRO_FEATURES_GENERATOR_HDRS := \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_features_generator.h \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_model_settings.h \ $(MICRO_FEATURES_LIB_HDRS) MICRO_FEATURES_GENERATOR_TEST_SRCS := \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_features_generator_test.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/no_feature_data_slice.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/yes_feature_data_slice.cc \ $(MICRO_FEATURES_GENERATOR_SRCS) MICRO_FEATURES_GENERATOR_TEST_HDRS := \ tensorflow/lite/micro/examples/micro_speech/micro_features/no_feature_data_slice.h \ tensorflow/lite/micro/examples/micro_speech/micro_features/yes_feature_data_slice.h \ $(MICRO_FEATURES_GENERATOR_HDRS) AUDIO_PROVIDER_TEST_SRCS := \ tensorflow/lite/micro/examples/micro_speech/audio_provider_test.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_model_settings.cc \ tensorflow/lite/micro/examples/micro_speech/audio_provider.cc AUDIO_PROVIDER_TEST_HDRS := \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_model_settings.h \ tensorflow/lite/micro/examples/micro_speech/audio_provider.h \ AUDIO_PROVIDER_MOCK_TEST_SRCS := \ tensorflow/lite/micro/examples/micro_speech/audio_provider_mock_test.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_model_settings.cc \ tensorflow/lite/micro/examples/micro_speech/audio_provider_mock.cc AUDIO_PROVIDER_MOCK_TEST_HDRS := \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_model_settings.h \ tensorflow/lite/micro/examples/micro_speech/audio_provider.h \ FEATURE_PROVIDER_TEST_SRCS := \ tensorflow/lite/micro/examples/micro_speech/feature_provider_test.cc \ tensorflow/lite/micro/examples/micro_speech/audio_provider.cc \ tensorflow/lite/micro/examples/micro_speech/feature_provider.cc \ $(MICRO_FEATURES_GENERATOR_SRCS) FEATURE_PROVIDER_TEST_HDRS := \ tensorflow/lite/micro/examples/micro_speech/audio_provider.h \ tensorflow/lite/micro/examples/micro_speech/feature_provider.h \ $(MICRO_FEATURES_GENERATOR_HDRS) FEATURE_PROVIDER_MOCK_TEST_SRCS := \ tensorflow/lite/micro/examples/micro_speech/feature_provider_test.cc \ tensorflow/lite/micro/examples/micro_speech/audio_provider_mock.cc \ tensorflow/lite/micro/examples/micro_speech/feature_provider.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/no_micro_features_data.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/yes_micro_features_data.cc \ $(MICRO_FEATURES_GENERATOR_SRCS) FEATURE_PROVIDER_MOCK_TEST_HDRS := \ tensorflow/lite/micro/examples/micro_speech/audio_provider.h \ tensorflow/lite/micro/examples/micro_speech/feature_provider.h \ tensorflow/lite/micro/examples/micro_speech/micro_features/no_micro_features_data.h \ tensorflow/lite/micro/examples/micro_speech/micro_features/yes_micro_features_data.h \ $(MICRO_FEATURES_GENERATOR_HDRS) RECOGNIZE_COMMANDS_TEST_SRCS := \ tensorflow/lite/micro/examples/micro_speech/recognize_commands_test.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_model_settings.cc \ tensorflow/lite/micro/examples/micro_speech/recognize_commands.cc RECOGNIZE_COMMANDS_TEST_HDRS := \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_model_settings.h \ tensorflow/lite/micro/examples/micro_speech/recognize_commands.h COMMAND_RESPONDER_TEST_SRCS := \ tensorflow/lite/micro/examples/micro_speech/command_responder_test.cc \ tensorflow/lite/micro/examples/micro_speech/command_responder.cc COMMAND_RESPONDER_TEST_HDRS := \ tensorflow/lite/micro/examples/micro_speech/command_responder.h MICRO_SPEECH_SRCS := \ tensorflow/lite/micro/examples/micro_speech/main.cc \ tensorflow/lite/micro/examples/micro_speech/main_functions.cc \ tensorflow/lite/micro/examples/micro_speech/audio_provider.cc \ tensorflow/lite/micro/examples/micro_speech/feature_provider.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/no_micro_features_data.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/yes_micro_features_data.cc \ tensorflow/lite/micro/examples/micro_speech/recognize_commands.cc \ tensorflow/lite/micro/examples/micro_speech/command_responder.cc \ $(MICRO_FEATURES_GENERATOR_SRCS) MICRO_SPEECH_HDRS := \ tensorflow/lite/micro/examples/micro_speech/audio_provider.h \ tensorflow/lite/micro/examples/micro_speech/feature_provider.h \ tensorflow/lite/micro/examples/micro_speech/micro_features/no_micro_features_data.h \ tensorflow/lite/micro/examples/micro_speech/micro_features/yes_micro_features_data.h \ tensorflow/lite/micro/examples/micro_speech/recognize_commands.h \ tensorflow/lite/micro/examples/micro_speech/command_responder.h \ tensorflow/lite/micro/examples/micro_speech/main_functions.h \ $(MICRO_FEATURES_GENERATOR_HDRS) MICRO_SPEECH_MOCK_SRCS := \ tensorflow/lite/micro/examples/micro_speech/main.cc \ tensorflow/lite/micro/examples/micro_speech/main_functions.cc \ tensorflow/lite/micro/examples/micro_speech/audio_provider_mock.cc \ tensorflow/lite/micro/examples/micro_speech/feature_provider.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/no_micro_features_data.cc \ tensorflow/lite/micro/examples/micro_speech/micro_features/yes_micro_features_data.cc \ tensorflow/lite/micro/examples/micro_speech/recognize_commands.cc \ tensorflow/lite/micro/examples/micro_speech/command_responder.cc \ $(MICRO_FEATURES_GENERATOR_SRCS) MICRO_SPEECH_MOCK_HDRS := \ tensorflow/lite/micro/examples/micro_speech/audio_provider.h \ tensorflow/lite/micro/examples/micro_speech/feature_provider.h \ tensorflow/lite/micro/examples/micro_speech/micro_features/micro_features_generator.h \ tensorflow/lite/micro/examples/micro_speech/micro_features/no_micro_features_data.h \ tensorflow/lite/micro/examples/micro_speech/micro_features/yes_micro_features_data.h \ tensorflow/lite/micro/examples/micro_speech/recognize_commands.h \ tensorflow/lite/micro/examples/micro_speech/command_responder.h \ tensorflow/lite/micro/examples/micro_speech/main_functions.h \ $(MICRO_FEATURES_GENERATOR_HDRS) MICRO_SPEECH_GENERATOR_INPUTS := \ tensorflow/lite/micro/examples/micro_speech/micro_speech.tflite \ tensorflow/lite/micro/examples/micro_speech/testdata/no_1000ms.wav \ tensorflow/lite/micro/examples/micro_speech/testdata/no_30ms.wav \ tensorflow/lite/micro/examples/micro_speech/testdata/yes_1000ms.wav \ tensorflow/lite/micro/examples/micro_speech/testdata/yes_30ms.wav MICRO_SPEECH_GENERATED_SRCS := \ $(GENERATED_SRCS_DIR)tensorflow/lite/micro/examples/micro_speech/micro_speech_model_data.cc \ $(GENERATED_SRCS_DIR)tensorflow/lite/micro/examples/micro_speech/testdata/no_1000ms_audio_data.cc \ $(GENERATED_SRCS_DIR)tensorflow/lite/micro/examples/micro_speech/testdata/no_30ms_audio_data.cc \ $(GENERATED_SRCS_DIR)tensorflow/lite/micro/examples/micro_speech/testdata/yes_1000ms_audio_data.cc \ $(GENERATED_SRCS_DIR)tensorflow/lite/micro/examples/micro_speech/testdata/yes_30ms_audio_data.cc MICRO_SPEECH_GENERATED_HDRS := \ $(GENERATED_SRCS_DIR)tensorflow/lite/micro/examples/micro_speech/micro_speech_model_data.h \ $(GENERATED_SRCS_DIR)tensorflow/lite/micro/examples/micro_speech/testdata/no_1000ms_audio_data.h \ $(GENERATED_SRCS_DIR)tensorflow/lite/micro/examples/micro_speech/testdata/no_30ms_audio_data.h \ $(GENERATED_SRCS_DIR)tensorflow/lite/micro/examples/micro_speech/testdata/yes_1000ms_audio_data.h \ $(GENERATED_SRCS_DIR)tensorflow/lite/micro/examples/micro_speech/testdata/yes_30ms_audio_data.h #Find any platform - specific rules for this example. include $(wildcard tensorflow/lite/micro/examples/micro_speech/*/Makefile.inc) # TODO(b/161489252): Disabling warnings for this example until we have a better # way to build third_party code with a reduced list of CFLAGS. CCFLAGS := $(filter-out $(CC_WARNINGS),$(CCFLAGS)) # Test the code for feature generation. $(eval $(call microlite_test,micro_features_generator_test,\ $(MICRO_FEATURES_GENERATOR_TEST_SRCS),$(MICRO_FEATURES_GENERATOR_TEST_HDRS),$(MICRO_SPEECH_GENERATOR_INPUTS))) # Tests loading and running a speech model. $(eval $(call microlite_test,micro_speech_test,\ $(MICRO_SPEECH_TEST_SRCS),$(MICRO_SPEECH_TEST_HDRS),$(MICRO_SPEECH_GENERATOR_INPUTS))) # Test the code for feature generation. $(eval $(call microlite_test,simple_features_generator_test,\ $(SIMPLE_FEATURES_GENERATOR_TEST_SRCS),$(SIMPLE_FEATURES_GENERATOR_TEST_HDRS),$(MICRO_SPEECH_GENERATOR_INPUTS))) # Tests the audio provider module. $(eval $(call microlite_test,audio_provider_test,\ $(AUDIO_PROVIDER_TEST_SRCS),$(AUDIO_PROVIDER_TEST_HDRS))) # Tests the audio provider mock module. $(eval $(call microlite_test,audio_provider_mock_test,\ $(AUDIO_PROVIDER_MOCK_TEST_SRCS),$(AUDIO_PROVIDER_MOCK_TEST_HDRS),$(MICRO_SPEECH_GENERATOR_INPUTS))) # Tests the feature provider module. $(eval $(call microlite_test,feature_provider_test,\ $(FEATURE_PROVIDER_TEST_SRCS),$(FEATURE_PROVIDER_TEST_HDRS))) # Tests the feature provider module using the mock audio provider. $(eval $(call microlite_test,feature_provider_mock_test,\ $(FEATURE_PROVIDER_MOCK_TEST_SRCS),$(FEATURE_PROVIDER_MOCK_TEST_HDRS),$(MICRO_SPEECH_GENERATOR_INPUTS))) # Tests the command recognizer module. $(eval $(call microlite_test,recognize_commands_test,\ $(RECOGNIZE_COMMANDS_TEST_SRCS),$(RECOGNIZE_COMMANDS_TEST_HDRS))) # Tests responding to a command. $(eval $(call microlite_test,command_responder_test,\ $(COMMAND_RESPONDER_TEST_SRCS),$(COMMAND_RESPONDER_TEST_HDRS))) # Builds a standalone speech command recognizer binary. $(eval $(call microlite_test,micro_speech,\ $(MICRO_SPEECH_SRCS),$(MICRO_SPEECH_HDRS),$(MICRO_SPEECH_GENERATOR_INPUTS))) # Builds a standalone speech command recognizer binary using fake audio input. $(eval $(call microlite_test,micro_speech_mock,\ $(MICRO_SPEECH_MOCK_SRCS),$(MICRO_SPEECH_MOCK_HDRS),$(MICRO_SPEECH_GENERATOR_INPUTS))) # Add sources and headers generated from $(MICRO_SPEECH_GENERATOR_INPUTS). MICRO_SPEECH_SRCS += $(MICRO_SPEECH_GENERATED_SRCS) MICRO_SPEECH_HDRS += $(MICRO_SPEECH_GENERATED_HDRS) list_micro_speech_example_sources: @echo $(MICRO_SPEECH_SRCS) list_micro_speech_example_headers: @echo $(MICRO_SPEECH_HDRS)