2023-07-04-gu-gelyra-bian-jie-ma-qi-bian-yi-ji-cheng

127 阅读6分钟

原文链接:blog.csdn.net/liuxunfei15…

集成版本:

`
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

`
workspace 内部分三方库可能会拉取失败:

常见踩坑问题:

  1. 比如Tensorflow工程太大拉取超时,解决方法,在自己的服务器上开vpn, 或者使用 http_archive 替换git_repository 进行拉取
  2. Maven 工具拉取超时,解决方法,如果只是构建linux 集成so,可以直接注释掉,Maven是构建安卓工程才会用到的依赖,或者开vpn
  3. 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

`
## 构建集成so:

由于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"],)

`