From c9131fff39f2debc833fd2f941255519f545bb7c Mon Sep 17 00:00:00 2001 From: evgeny Date: Sat, 3 Oct 2026 01:48:37 +0300 Subject: [PATCH] Ship deterministic speech fixture for VAD regressions --- tests/Makefile.am | 4 +++- tests/data/silero_speech.pcm | Bin 0 -> 32768 bytes tests/data/silero_speech.txt | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 tests/data/silero_speech.pcm create mode 100644 tests/data/silero_speech.txt diff --git a/tests/Makefile.am b/tests/Makefile.am index 22cad98f..d2a79120 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,5 +1,7 @@ # Tests Makefile.am for utun - all tests with new ll_queue library +EXTRA_DIST = data/silero_speech.pcm data/silero_speech.txt + # All available tests (check_PROGRAMS runs via automake check-TESTS) check_PROGRAMS = \ test_ll_queue \ @@ -560,7 +562,7 @@ test_radio_vad_SOURCES = test_radio_vad.c test_radio_vad_LDADD = -lm test_silero_vad_SOURCES = test_silero_vad.c -test_silero_vad_CFLAGS = -I$(top_srcdir)/lib +test_silero_vad_CFLAGS = -I$(top_srcdir)/lib -DTEST_SILERO_SPEECH_PATH='"$(srcdir)/data/silero_speech.pcm"' test_silero_vad_LDADD = $(COMMON_LIBS) @SILERO_VAD_LIBS@ test_speex_aec_SOURCES = test_speex_aec.c diff --git a/tests/data/silero_speech.pcm b/tests/data/silero_speech.pcm new file mode 100644 index 0000000000000000000000000000000000000000..cea13891984104f58ce50d5c88f113751f6f31b5 GIT binary patch literal 32768 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