集成版本:
`
`
https://github.com/google/lyra/archive/refs/tags/v1.3.2.zipwget https://github.com/google/lyra/archive/refs/tags/v1.3.2.zipunzip v1.3.2.zip , cd lyra-1.3.2 |
常见踩坑问题:
- 比如Tensorflow工程太大拉取超时,解决方法,在自己的服务器上开vpn, 或者使用 http_archive 替换git_repository 进行拉取
- Maven 工具拉取超时,解决方法,如果只是构建linux 集成so,可以直接注释掉,Maven是构建安卓工程才会用到的依赖,或者开vpn
- bazel 、python、gcc版本不对,个人使用的bazel版本:5.3.2、 gcc版本:8.3.1、 python2版本:2.7、python3版本:3.6
个人修改后可以成功构建的workspace:
`
`
######################### Platform Independent ######################### load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository", "new_git_repository")load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # GoogleTest/GoogleMock framework.git_repository( name = "com_google_googletest", remote = "https://github.com/google/googletest.git", tag = "release-1.10.0",) # Google benchmark.http_archive( name = "com_github_google_benchmark", urls = ["https://github.com/google/benchmark/archive/bf585a2789e30585b4e3ce6baf11ef2750b54677.zip"], # 2020-11-26T11:14:03Z strip_prefix = "benchmark-bf585a2789e30585b4e3ce6baf11ef2750b54677", sha256 = "2a778d821997df7d8646c9c59b8edb9a573a6e04c534c01892a40aa524a7b68c",) # proto_library, cc_proto_library, and java_proto_library rules implicitly# depend on @com_google_protobuf for protoc and proto runtimes.# This statement defines the @com_google_protobuf repo.git_repository( name = "com_google_protobuf", remote = "https://github.com/protocolbuffers/protobuf.git", tag = "v3.15.4",) load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")protobuf_deps() # Google Abseil Libsgit_repository( name = "com_google_absl", remote = "https://github.com/abseil/abseil-cpp.git", tag = "20211102.0", # Remove after https://github.com/abseil/abseil-cpp/issues/326 is solved. patches = [ "@//patches:com_google_absl_f863b622fe13612433fdf43f76547d5edda0c93001.diff" ], patch_args = [ "-p1", ]) # Filesystem# The new_* prefix is used because it is not a bazel project and there is# no BUILD file in that repo.FILESYSTEM_BUILD = """cc_library( name = "filesystem", hdrs = glob(["include/ghc/*"]), visibility = ["//visibility:public"],)""" new_git_repository( name = "gulrak_filesystem", remote = "https://github.com/gulrak/filesystem.git", tag = "v1.3.6", build_file_content = FILESYSTEM_BUILD) # Audio DSPgit_repository( name = "com_google_audio_dsp", # TODO(b/231448719) use main google repo after merging PR for TF eigen compatibility. remote = "https://github.com/mchinen/multichannel-audio-tools.git", # There are no tags for this repo, we are synced to bleeding edge. commit = "14a45c5a7c965e5ef01fe537bd816ce10a247813", repo_mapping = { "@com_github_glog_glog" : "@com_google_glog", "@eigen3": "@eigen_archive" }) # Transitive dependencies of Audio DSP.# Note: eigen is used by Audio DSP, but provided through tensorflow workspace functions. http_archive( name = "fft2d", build_file = "fft2d.BUILD", sha256 = "ada7e99087c4ed477bfdf11413f2ba8db8a840ba9bbf8ac94f4f3972e2a7cec9", urls = [ "http://www.kurims.kyoto-u.ac.jp/~ooura/fft2d.tgz", ],) # Google logginggit_repository( name = "com_google_glog", remote = "https://github.com/google/glog.git", branch = "master")# Dependency for gloggit_repository( name = "com_github_gflags_gflags", remote = "https://github.com/mchinen/gflags.git", branch = "android_linking_fix") # Bazel/build rules http_archive( name = "bazel_skylib", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.0.2/bazel-skylib-1.0.2.tar.gz", "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.2/bazel-skylib-1.0.2.tar.gz", ], sha256 = "97e70364e9249702246c0e9444bccdc4b847bed1eb03c5a3ece4f83dfe6abc44",)load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")bazel_skylib_workspace() load("//:android_configure.bzl", "android_configure")android_configure(name = "local_config_android") load("@local_config_android//:android_configure.bzl", "android_workspace")android_workspace() http_archive( name = "rules_android", sha256 = "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", strip_prefix = "rules_android-0.1.1", urls = ["https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip"],) # Google Maven Repository# See https://github.com/android/android-test/blob/master/WORKSPACE for examples# of importing android deps.# The specific versions can be found in:# https://github.com/android/android-test/blob/master/build_extensions/axt_versions.bzl# and# https://developer.android.com/jetpack/androidx/releases/# This allows us to use "@maven//some_android_package" deps for imports. RULES_JVM_EXTERNAL_TAG = "4.0"RULES_JVM_EXTERNAL_SHA = "31701ad93dbfe544d597dbe62c9a1fdd76d81d8a9150c2bf1ecf928ecdf97169" http_archive( name = "rules_jvm_external", strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG, sha256 = RULES_JVM_EXTERNAL_SHA, url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,) load("@rules_jvm_external//:defs.bzl", "maven_install") maven_install( artifacts = [ "androidx.annotation:annotation:1.2.0", "androidx.appcompat:appcompat:1.3.1", "androidx.core:core:1.6.0", "androidx.constraintlayout:constraintlayout:2.1.1" ], repositories = [ "https://maven.google.com", "https://repo1.maven.org/maven2", ],) # Begin Tensorflow WORKSPACE subset required for TFLite git_repository( name = "org_tensorflow", remote = "https://github.com/tensorflow/tensorflow.git", # Below is reproducible and equivalent to `tag = "v2.11.0"` commit = "d5b57ca93e506df258271ea00fc29cf98383a374", shallow_since = "1668561432 -0800") # Check bazel version requirement, which is stricter than TensorFlow's.load("@bazel_skylib//lib:versions.bzl", "versions")versions.check("3.7.2") # TF WORKSPACE Loading functions# This section uses a subset of the tensorflow WORKSPACE loading by reusing its contents.# There are four workspace() functions create repos for the dependencies.# TF's loading is very complicated, and we only need a subset for TFLite.# If we use the full TF loading sequence, we also run into conflicts and errors on some platforms. load("@org_tensorflow//tensorflow:workspace3.bzl", "workspace")workspace() load("@org_tensorflow//tensorflow:workspace2.bzl", workspace2 = "workspace")workspace2() # End Tensorflow WORKSPACE subset required for TFLite |
由于lyra 使用bazel 系统构建,bazel是流氓工具,用cc_library构建的库,只对它的 workspace可见,而且集成方,也需要使用bazel 系统构建自己的项目,所以如果通过cmake直接集成他BUILD文件内生成的.a、.so是行不通的,会报很多函数找不到实现
解决方法:自己写个封装层(framework),把lyra_encoder、lyra_decoder集成进去,然后使用bazel 的cc_binary生成so,导出自己封装的函数,就可以在bazel以外的系统调用了
我的BUILD文件内最终生成用于集成的liblyra.so
`
`
# [internal] load cc_fuzz_target.bzl# [internal] load cc_proto_library.bzl# [internal] load android_cc_test:def.bzl package(default_visibility = ["//:__subpackages__"]) # To run all cc_tests in this directory:# bazel test //lyra:all # [internal] Command to run dsp_utils_android_test. # [internal] Command to run lyra_integration_android_test. exports_files( srcs = [ "lyra_benchmark_lib.cc", "lyra_benchmark_lib.h", "lyra_components.h", "lyra_config.h", "lyra_decoder.cc", "lyra_decoder.h", "lyra_encoder.cc", "lyra_encoder.h", "封装层.cpp", "封装层.h", "logging.h", "model_coeffs/lyragan.tflite", "model_coeffs/quantizer.tflite", "model_coeffs/soundstream_encoder.tflite", ],) config_setting( name = "android_config", values = {"crosstool_top": "//external:android/crosstool"},) cc_library( name = "architecture_utils", hdrs = ["architecture_utils.h"], deps = ["@gulrak_filesystem//:filesystem"],) cc_binary(name = "liblyra.so", #导出用于集成的liblyra.sosrcs = [ "封装层.cpp", "封装层.h", "logging.h", #因为我的工程也用到glog,lyra里也依赖glog,所以直接导出lyra里的glog使用,无需再次集成glog],deps = [ ":lyra_encoder", #依赖,注意要把头文件和源文件中include的头文件所在的BUILD包都加进去 ":lyra_decoder",],linkopts = ["-lstdc++", #链接时候的命令],copts = ["-std=c++17"],linkstatic = True,linkshared=True, # 由这个属性指定生成动态库目标文件visibility = ["//visibility:public"], ) cc_library( name = "lyra_benchmark_lib", srcs = ["lyra_benchmark_lib.cc"], hdrs = ["lyra_benchmark_lib.h"], deps = [ ":architecture_utils", ":dsp_utils", ":feature_extractor_interface", ":generative_model_interface", ":lyra_components", ":lyra_config", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:str_format", "@com_google_absl//absl/time", "@com_google_absl//absl/types:span", "@com_google_audio_dsp//audio/dsp:signal_vector_util", "@com_google_glog//:glog", "@gulrak_filesystem//:filesystem", ],) cc_library( name = "feature_estimator_interface", hdrs = [ "feature_estimator_interface.h", ], deps = [ "@com_google_absl//absl/types:span", ],) cc_library( name = "zero_feature_estimator", hdrs = [ "zero_feature_estimator.h", ], deps = [ ":feature_estimator_interface", "@com_google_absl//absl/types:span", ],) cc_library( name = "generative_model_interface", hdrs = [ "generative_model_interface.h", ], deps = [ "@com_google_glog//:glog", ],) cc_library( name = "resampler_interface", hdrs = [ "resampler_interface.h", ], deps = [ "@com_google_absl//absl/types:span", ],) cc_library( name = "feature_extractor_interface", hdrs = [ "feature_extractor_interface.h", ], deps = [ "@com_google_absl//absl/types:span", ],) cc_library( name = "lyra_decoder_interface", hdrs = [ "lyra_decoder_interface.h", ], deps = [ "@com_google_absl//absl/types:span", ],) cc_library( name = "lyra_encoder_interface", hdrs = [ "lyra_encoder_interface.h", ], deps = [ "@com_google_absl//absl/types:span", ],) cc_library( name = "vector_quantizer_interface", hdrs = [ "vector_quantizer_interface.h", ], deps = [ ],) cc_library( name = "lyra_gan_model", srcs = [ "lyra_gan_model.cc", ], hdrs = [ "lyra_gan_model.h", ], data = ["model_coeffs/lyragan.tflite"], deps = [ ":dsp_utils", ":generative_model_interface", ":tflite_model_wrapper", "@com_google_absl//absl/memory", "@com_google_absl//absl/types:span", "@com_google_glog//:glog", "@gulrak_filesystem//:filesystem", ],) cc_library( name = "lyra_decoder", srcs = [ "lyra_decoder.cc", ], hdrs = [ "lyra_decoder.h", ], visibility = ["//visibility:public"], deps = [ ":buffered_filter_interface", ":buffered_resampler", ":comfort_noise_generator", ":feature_estimator_interface", ":generative_model_interface", ":lyra_components", ":lyra_config", ":lyra_decoder_interface", ":noise_estimator", ":noise_estimator_interface", ":vector_quantizer_interface", "@com_google_absl//absl/memory", "@com_google_absl//absl/status", "@com_google_absl//absl/types:span", "@com_google_glog//:glog", "@gulrak_filesystem//:filesystem", ],) cc_library( name = "comfort_noise_generator", srcs = [ "comfort_noise_generator.cc", ], hdrs = [ "comfort_noise_generator.h", ], deps = [ ":dsp_utils", ":generative_model_interface", ":log_mel_spectrogram_extractor_impl", "@com_google_absl//absl/memory", "@com_google_absl//absl/random", "@com_google_absl//absl/types:span", "@com_google_audio_dsp//audio/dsp:number_util", "@com_google_audio_dsp//audio/dsp/mfcc", "@com_google_audio_dsp//audio/dsp/spectrogram:inverse_spectrogram", "@com_google_glog//:glog", ],) cc_library( name = "lyra_encoder", srcs = [ "lyra_encoder.cc", ], hdrs = [ "lyra_encoder.h", ], visibility = ["//visibility:public"], deps = [ ":feature_extractor_interface", ":lyra_components", ":lyra_config", ":lyra_encoder_interface", ":noise_estimator", ":noise_estimator_interface", ":packet", ":packet_interface", ":resampler", ":resampler_interface", ":vector_quantizer_interface", "@com_google_absl//absl/memory", "@com_google_absl//absl/status", "@com_google_absl//absl/types:span", "@com_google_glog//:glog", "@gulrak_filesystem//:filesystem", ],) cc_library( name = "noise_estimator", srcs = [ "noise_estimator.cc", ], hdrs = [ "noise_estimator.h", ], deps = [ ":log_mel_spectrogram_extractor_impl", ":noise_estimator_interface", "@com_google_absl//absl/memory", "@com_google_absl//absl/types:span", "@com_google_audio_dsp//audio/dsp:signal_vector_util", "@com_google_glog//:glog", ],) cc_library( name = "noise_estimator_interface", hdrs = [ "noise_estimator_interface.h", ], deps = [ "@com_google_absl//absl/types:span", ],) cc_library( name = "packet_loss_model_interface", hdrs = ["packet_loss_model_interface.h"], deps = [],) cc_library( name = "fixed_packet_loss_model", srcs = [ "fixed_packet_loss_model.cc", ], hdrs = [ "fixed_packet_loss_model.h", ], deps = [":packet_loss_model_interface"],) cc_library( name = "gilbert_model", srcs = [ "gilbert_model.cc", ], hdrs = [ "gilbert_model.h", ], deps = [ ":packet_loss_model_interface", "@com_google_absl//absl/memory", "@com_google_glog//:glog", ],) cc_library( name = "lyra_config", srcs = ["lyra_config.cc"], hdrs = ["lyra_config.h"], deps = [ ":lyra_config_cc_proto", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/status", "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:str_format", "@com_google_glog//:glog", "@gulrak_filesystem//:filesystem", ],) proto_library( name = "lyra_config_proto", srcs = ["lyra_config.proto"],) cc_proto_library( name = "lyra_config_cc_proto", deps = [":lyra_config_proto"],) cc_library( name = "lyra_components", srcs = [ "lyra_components.cc", ], hdrs = [ "lyra_components.h", ], deps = [ ":feature_estimator_interface", ":feature_extractor_interface", ":generative_model_interface", ":lyra_gan_model", ":packet", ":packet_interface", ":residual_vector_quantizer", ":soundstream_encoder", ":vector_quantizer_interface", ":zero_feature_estimator", "@gulrak_filesystem//:filesystem", ],) cc_library( name = "log_mel_spectrogram_extractor_impl", srcs = [ "log_mel_spectrogram_extractor_impl.cc", ], hdrs = [ "log_mel_spectrogram_extractor_impl.h", ], deps = [ ":feature_extractor_interface", "@com_google_absl//absl/memory", "@com_google_absl//absl/types:span", "@com_google_audio_dsp//audio/dsp:number_util", "@com_google_audio_dsp//audio/dsp/mfcc", "@com_google_audio_dsp//audio/dsp/spectrogram", "@com_google_glog//:glog", ],) cc_library( name = "soundstream_encoder", srcs = [ "soundstream_encoder.cc", ], hdrs = [ "soundstream_encoder.h", ], data = ["model_coeffs/soundstream_encoder.tflite"], deps = [ ":dsp_utils", ":feature_extractor_interface", ":tflite_model_wrapper", "@com_google_absl//absl/memory", "@com_google_absl//absl/types:span", "@com_google_glog//:glog", "@gulrak_filesystem//:filesystem", ],) cc_library( name = "residual_vector_quantizer", srcs = [ "residual_vector_quantizer.cc", ], hdrs = [ "residual_vector_quantizer.h", ], data = [ "model_coeffs/quantizer.tflite", ], deps = [ ":tflite_model_wrapper", ":vector_quantizer_interface", "@com_google_absl//absl/memory", "@com_google_glog//:glog", "@gulrak_filesystem//:filesystem", ],) cc_library( name = "packet_interface", hdrs = [ "packet_interface.h", ], deps = [ "@com_google_absl//absl/types:span", ],) cc_library( name = "packet", hdrs = ["packet.h"], deps = [ ":packet_interface", "@com_google_absl//absl/memory", "@com_google_absl//absl/types:span", "@com_google_glog//:glog", ],) cc_library( name = "buffered_filter_interface", hdrs = ["buffered_filter_interface.h"],) cc_library( name = "buffered_resampler", srcs = ["buffered_resampler.cc"], hdrs = ["buffered_resampler.h"], deps = [ ":buffered_filter_interface", ":resampler", ":resampler_interface", "@com_google_absl//absl/memory", "@com_google_glog//:glog", ],) cc_test( name = "buffered_resampler_test", srcs = ["buffered_resampler_test.cc"], deps = [ ":buffered_resampler", ":lyra_config", ":resampler_interface", "//lyra/testing:mock_resampler", "@com_google_absl//absl/types:span", "@com_google_googletest//:gtest_main", ],) cc_library( name = "preprocessor_interface", hdrs = [ "preprocessor_interface.h", ], deps = [ "@com_google_absl//absl/types:span", ],) cc_library( name = "no_op_preprocessor", hdrs = [ "no_op_preprocessor.h", ], deps = [ ":preprocessor_interface", "@com_google_absl//absl/types:span", ],) cc_test( name = "no_op_preprocessor_test", size = "small", srcs = ["no_op_preprocessor_test.cc"], deps = [ ":no_op_preprocessor", "@com_google_absl//absl/types:span", "@com_google_googletest//:gtest_main", ],) cc_binary( name = "lyra_benchmark", srcs = [ "lyra_benchmark.cc", ], linkopts = select({ ":android_config": ["-landroid"], "//conditions:default": [], }), deps = [ ":lyra_benchmark_lib", "@com_google_absl//absl/flags:flag", "@com_google_absl//absl/flags:parse", "@com_google_absl//absl/flags:usage", "@com_google_absl//absl/strings", ],) cc_test( name = "lyra_decoder_test", size = "large", srcs = ["lyra_decoder_test.cc"], data = [":tflite_testdata"], shard_count = 8, deps = [ ":buffered_filter_interface", ":buffered_resampler", ":dsp_utils", ":feature_estimator_interface", ":generative_model_interface", ":lyra_components", ":lyra_config", ":lyra_decoder", ":packet_interface", ":resampler", ":vector_quantizer_interface", "//lyra/testing:mock_generative_model", "//lyra/testing:mock_noise_estimator", "//lyra/testing:mock_vector_quantizer", "@com_google_absl//absl/strings", "@com_google_absl//absl/types:span", "@com_google_googletest//:gtest_main", "@gulrak_filesystem//:filesystem", ],) cc_test( name = "comfort_noise_generator_test", size = "small", srcs = ["comfort_noise_generator_test.cc"], deps = [ ":comfort_noise_generator", ":dsp_utils", ":log_mel_spectrogram_extractor_impl", "@com_google_googletest//:gtest_main", ],) cc_test( name = "lyra_gan_model_test", srcs = ["lyra_gan_model_test.cc"], deps = [ ":lyra_config", ":lyra_gan_model", "@com_google_googletest//:gtest_main", "@gulrak_filesystem//:filesystem", ],) cc_test( name = "lyra_integration_test", size = "small", timeout = "long", srcs = ["lyra_integration_test.cc"], data = [ ":tflite_testdata", "//lyra/testdata:sample1_16kHz.wav", "//lyra/testdata:sample1_32kHz.wav", "//lyra/testdata:sample1_48kHz.wav", "//lyra/testdata:sample1_8kHz.wav", ], shard_count = 4, deps = [ ":dsp_utils", ":log_mel_spectrogram_extractor_impl", ":lyra_config", ":lyra_decoder", ":lyra_encoder", ":wav_utils", "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_absl//absl/types:span", "@com_google_googletest//:gtest_main", "@gulrak_filesystem//:filesystem", ],) cc_test( name = "noise_estimator_test", size = "small", srcs = ["noise_estimator_test.cc"], deps = [ ":comfort_noise_generator", ":dsp_utils", ":log_mel_spectrogram_extractor_impl", ":lyra_config", ":noise_estimator", "@com_google_googletest//:gtest_main", ],) cc_test( name = "fixed_packet_loss_model_test", size = "small", srcs = ["fixed_packet_loss_model_test.cc"], deps = [ ":fixed_packet_loss_model", "@com_google_googletest//:gtest_main", ],) cc_test( name = "gilbert_model_test", size = "small", srcs = ["gilbert_model_test.cc"], deps = [ ":gilbert_model", "@com_google_googletest//:gtest_main", ],) cc_test( name = "log_mel_spectrogram_extractor_impl_test", size = "small", srcs = ["log_mel_spectrogram_extractor_impl_test.cc"], deps = [ ":log_mel_spectrogram_extractor_impl", "@com_google_absl//absl/types:span", "@com_google_googletest//:gtest_main", ],) cc_binary( name = "log_mel_spectrogram_extractor_impl_benchmark", testonly = 1, srcs = ["log_mel_spectrogram_extractor_impl_benchmark.cc"], deps = [ ":log_mel_spectrogram_extractor_impl", "@com_github_google_benchmark//:benchmark", "@com_github_google_benchmark//:benchmark_main", "@com_google_absl//absl/random", "@com_google_absl//absl/types:span", ],) cc_test( name = "soundstream_encoder_test", srcs = ["soundstream_encoder_test.cc"], deps = [ ":lyra_config", ":soundstream_encoder", "@com_google_googletest//:gtest_main", "@gulrak_filesystem//:filesystem", ],) cc_test( name = "lyra_encoder_test", size = "small", srcs = ["lyra_encoder_test.cc"], data = [":tflite_testdata"], shard_count = 8, deps = [ ":feature_extractor_interface", ":lyra_config", ":lyra_encoder", ":noise_estimator_interface", ":packet", ":resampler_interface", ":vector_quantizer_interface", "//lyra/testing:mock_feature_extractor", "//lyra/testing:mock_noise_estimator", "//lyra/testing:mock_resampler", "//lyra/testing:mock_vector_quantizer", "@com_google_absl//absl/types:span", "@com_google_googletest//:gtest_main", "@gulrak_filesystem//:filesystem", ],) cc_test( name = "residual_vector_quantizer_test", size = "small", srcs = [ "residual_vector_quantizer_test.cc", ], deps = [ ":log_mel_spectrogram_extractor_impl", ":lyra_config", ":residual_vector_quantizer", "@com_google_googletest//:gtest_main", "@gulrak_filesystem//:filesystem", ],) cc_test( name = "packet_test", size = "small", srcs = ["packet_test.cc"], deps = [ ":packet", "@com_google_absl//absl/types:span", "@com_google_googletest//:gtest_main", ],) cc_library( name = "resampler", srcs = [ "resampler.cc", ], hdrs = ["resampler.h"], deps = [ ":dsp_utils", ":resampler_interface", "@com_google_absl//absl/memory", "@com_google_absl//absl/types:span", "@com_google_audio_dsp//audio/dsp:resampler_q", "@com_google_glog//:glog", ],) cc_test( name = "resampler_test", size = "small", srcs = ["resampler_test.cc"], deps = [ ":lyra_config", ":resampler", "@com_google_absl//absl/types:span", "@com_google_audio_dsp//audio/dsp:signal_vector_util", "@com_google_googletest//:gtest_main", ],) cc_library( name = "dsp_utils", srcs = [ "dsp_utils.cc", ], hdrs = ["dsp_utils.h"], deps = [ "@com_google_absl//absl/types:span", "@com_google_audio_dsp//audio/dsp:signal_vector_util", "@com_google_glog//:glog", ],) cc_library( name = "wav_utils", srcs = [ "wav_utils.cc", ], hdrs = ["wav_utils.h"], deps = [ "@com_google_absl//absl/status", "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_audio_dsp//audio/dsp/portable:read_wav_file", "@com_google_audio_dsp//audio/dsp/portable:write_wav_file", ],) cc_library( name = "tflite_model_wrapper", srcs = [ "tflite_model_wrapper.cc", ], hdrs = [ "tflite_model_wrapper.h", ], deps = [ "@com_google_absl//absl/memory", "@com_google_absl//absl/types:span", "@com_google_glog//:glog", "@gulrak_filesystem//:filesystem", "@org_tensorflow//tensorflow/lite:framework", "@org_tensorflow//tensorflow/lite/delegates/xnnpack:xnnpack_delegate", "@org_tensorflow//tensorflow/lite/kernels:builtin_ops", ],) cc_test( name = "wav_utils_test", size = "small", srcs = ["wav_utils_test.cc"], data = [ "//lyra/testdata:invalid.wav", "//lyra/testdata:sample1_16kHz.wav", ], deps = [ ":wav_utils", "@com_google_absl//absl/flags:flag", "@com_google_absl//absl/status", "@com_google_absl//absl/status:statusor", "@com_google_googletest//:gtest_main", "@gulrak_filesystem//:filesystem", ],) cc_test( name = "dsp_utils_test", size = "small", srcs = ["dsp_utils_test.cc"], deps = [ ":dsp_utils", "@com_google_absl//absl/types:span", "@com_google_googletest//:gtest_main", ],) cc_test( name = "tflite_model_wrapper_test", srcs = ["tflite_model_wrapper_test.cc"], data = ["model_coeffs/lyragan.tflite"], deps = [ ":tflite_model_wrapper", "@com_google_absl//absl/types:span", "@com_google_googletest//:gtest_main", "@gulrak_filesystem//:filesystem", "@org_tensorflow//tensorflow/lite:framework", ],) cc_test( name = "lyra_config_test", srcs = ["lyra_config_test.cc"], data = [":tflite_testdata"], deps = [ ":lyra_config", ":lyra_config_cc_proto", "@com_google_absl//absl/flags:flag", "@com_google_absl//absl/status", "@com_google_googletest//:gtest_main", "@gulrak_filesystem//:filesystem", ],) filegroup( name = "tflite_testdata", data = glob([ "model_coeffs/*", ]),) filegroup( name = "android_example_assets", srcs = glob([ "model_coeffs/*.tflite", ]) + ["model_coeffs/lyra_config.binarypb"],) |