Sfoglia il codice sorgente

test: [WFE] functional test: no audio - no spurious Features

Found out that Whisper throws a hissy fit in the form of a RuntimeError if the
there is no speech in the audio. We should consider catching this.

> RuntimeError: stack expects a non-empty TensorList
> stdout: "No active speech found in audio"

For the moment we can check that no audio throws an error and leave this as a TODO
main
Rob Hallam 2 mesi fa
parent
commit
ec65145762
1 ha cambiato i file con 30 aggiunte e 4 eliminazioni
  1. +30
    -4
      test/test_feature_extractors_functional.py

+ 30
- 4
test/test_feature_extractors_functional.py Vedi File

@@ -190,10 +190,7 @@ class TestWordFEFunctional(FEFunctionalTest):
SAMPLE_VIDEO = f"{self.SAMPLE_DIR}/sample-manual-audio-harvardsentences-rdh-video-colours.mp4"
DETECT_WORDS = ["birch", "smooth", "chicken", "depth",
"juice", "lemons", "box", "thrown", "beside",
"hogs", "fed"]
# DETECT_WORDS = ["birch", "smooth", "glue", "chicken", "depth", "well",
# "juice", "lemons", "punch", "box", "thrown", "beside",
# "truck", "hogs", "fed"]
"hogs", "fed"] # missing "truck", "glue", "well", "punch" due to problems

# create mock source with the video
source = mocks.MockSource(path=SAMPLE_VIDEO)
@@ -228,5 +225,34 @@ class TestWordFEFunctional(FEFunctionalTest):
# check if the word was feature extracted:
self.assertGreaterEqual(len(testfe.features), 4)

def test_audio_word_detection_noaudio_nofeatures(self):
"""Test audio word detection feature extractor
Uses:
- sample-manual-audio-blank-video-colours.mp4
:: silent video (30s)
-- pass if no features extracted
"""

SAMPLE_VIDEO = f"{self.SAMPLE_DIR}/sample-manual-audio-blank-video-colours.mp4"
DETECT_WORDS = ["birch", "smooth", "chicken", "depth",
"juice", "lemons", "box", "thrown", "beside",
"hogs", "fed"]

# create mock source with the video
source = mocks.MockSource(path=SAMPLE_VIDEO)

# create the feature extractor
testfe = extractors.WordFeatureExtractor(input_files=[source])
testfe.setup(words=DETECT_WORDS)

# ensure no features extracted from blank audio:
# self.assertEqual(len(testfe.features), 0)
# Actually, Whisper throws a hissy fit if there's no audio:
# RuntimeError: stack expects a non-empty TensorList
# stdout: "No active speech found in audio"
# TODO: consider catching this error in the FE
with self.assertRaises(RuntimeError):
testfe.run()

if __name__ == "__main__":
unittest.main()

Caricamento…
Annulla
Salva