From aaff4cd3d4808c76ad0d72b4776af1fceb3d370a Mon Sep 17 00:00:00 2001 From: remi-or Date: Wed, 28 May 2025 04:33:27 -0500 Subject: [PATCH 1/3] Added the require_speech decorator --- src/transformers/testing_utils.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/transformers/testing_utils.py b/src/transformers/testing_utils.py index 094bc4f232fd..dbacfcd82c59 100644 --- a/src/transformers/testing_utils.py +++ b/src/transformers/testing_utils.py @@ -130,6 +130,7 @@ is_seqio_available, is_soundfile_available, is_spacy_available, + is_speech_available, is_spqr_available, is_sudachi_available, is_sudachi_projection_available, @@ -1476,6 +1477,13 @@ def require_tiktoken(test_case): return unittest.skipUnless(is_tiktoken_available(), "test requires TikToken")(test_case) +def require_speech(test_case): + """ + Decorator marking a test that requires speech. These tests are skipped when speech isn't available. + """ + return unittest.skipUnless(is_speech_available(), "test requires speech")(test_case) + + def get_gpu_count(): """ Return the number of available gpus (regardless of whether torch, tf or jax is used) From 5c944886be3dcbc5e8ec81df1b0f8032e4108bf8 Mon Sep 17 00:00:00 2001 From: remi-or Date: Wed, 28 May 2025 04:34:11 -0500 Subject: [PATCH 2/3] Added require_speecj to some seamless_m4t tests --- tests/models/seamless_m4t/test_modeling_seamless_m4t.py | 5 ++++- .../models/seamless_m4t_v2/test_modeling_seamless_m4t_v2.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/models/seamless_m4t/test_modeling_seamless_m4t.py b/tests/models/seamless_m4t/test_modeling_seamless_m4t.py index e802e8cfb921..505237239376 100644 --- a/tests/models/seamless_m4t/test_modeling_seamless_m4t.py +++ b/tests/models/seamless_m4t/test_modeling_seamless_m4t.py @@ -18,7 +18,7 @@ import unittest from transformers import SeamlessM4TConfig, is_speech_available, is_torch_available -from transformers.testing_utils import require_torch, slow, torch_device +from transformers.testing_utils import require_speech, require_torch, slow, torch_device from transformers.trainer_utils import set_seed from transformers.utils import cached_property @@ -1028,6 +1028,7 @@ def test_to_swh_text(self): self.assertListAlmostEqual(expected_wav_slice, output.waveform.squeeze().tolist()[50:60]) + @require_speech @slow def test_to_rus_speech(self): model = SeamlessM4TModel.from_pretrained(self.repo_id).to(torch_device) @@ -1066,6 +1067,7 @@ def test_text_to_text_model(self): } self.factory_test_task(SeamlessM4TModel, SeamlessM4TForTextToText, self.input_text, kwargs1, kwargs2) + @require_speech @slow def test_speech_to_text_model(self): kwargs1 = {"tgt_lang": "eng", "return_intermediate_token_ids": True, "generate_speech": False} @@ -1077,6 +1079,7 @@ def test_speech_to_text_model(self): } self.factory_test_task(SeamlessM4TModel, SeamlessM4TForSpeechToText, self.input_audio, kwargs1, kwargs2) + @require_speech @slow def test_speech_to_speech_model(self): kwargs1 = {"tgt_lang": "eng", "return_intermediate_token_ids": True} diff --git a/tests/models/seamless_m4t_v2/test_modeling_seamless_m4t_v2.py b/tests/models/seamless_m4t_v2/test_modeling_seamless_m4t_v2.py index 75ff7edccbdd..eab2b0bd282f 100644 --- a/tests/models/seamless_m4t_v2/test_modeling_seamless_m4t_v2.py +++ b/tests/models/seamless_m4t_v2/test_modeling_seamless_m4t_v2.py @@ -18,7 +18,7 @@ import unittest from transformers import SeamlessM4Tv2Config, is_speech_available, is_torch_available -from transformers.testing_utils import require_torch, slow, torch_device +from transformers.testing_utils import require_speech, require_torch, slow, torch_device from transformers.trainer_utils import set_seed from transformers.utils import cached_property @@ -1095,6 +1095,7 @@ def test_to_swh_text(self): [-2.001826e-04, 8.580012e-02], [output.waveform.mean().item(), output.waveform.std().item()] ) + @require_speech @slow def test_to_rus_speech(self): model = SeamlessM4Tv2Model.from_pretrained(self.repo_id).to(torch_device) @@ -1139,6 +1140,7 @@ def test_text_to_text_model(self): } self.factory_test_task(SeamlessM4Tv2Model, SeamlessM4Tv2ForTextToText, self.input_text, kwargs1, kwargs2) + @require_speech @slow def test_speech_to_text_model(self): kwargs1 = {"tgt_lang": "eng", "return_intermediate_token_ids": True, "generate_speech": False} @@ -1150,6 +1152,7 @@ def test_speech_to_text_model(self): } self.factory_test_task(SeamlessM4Tv2Model, SeamlessM4Tv2ForSpeechToText, self.input_audio, kwargs1, kwargs2) + @require_speech @slow def test_speech_to_speech_model(self): kwargs1 = {"tgt_lang": "eng", "return_intermediate_token_ids": True} From 5ef09984038b132b376911118c81bdc022020720 Mon Sep 17 00:00:00 2001 From: remi-or Date: Mon, 2 Jun 2025 03:24:53 -0500 Subject: [PATCH 3/3] Changed skip message --- src/transformers/testing_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/transformers/testing_utils.py b/src/transformers/testing_utils.py index dbacfcd82c59..c3aeeb02e2b3 100644 --- a/src/transformers/testing_utils.py +++ b/src/transformers/testing_utils.py @@ -1481,7 +1481,7 @@ def require_speech(test_case): """ Decorator marking a test that requires speech. These tests are skipped when speech isn't available. """ - return unittest.skipUnless(is_speech_available(), "test requires speech")(test_case) + return unittest.skipUnless(is_speech_available(), "test requires torchaudio")(test_case) def get_gpu_count():