Skip to content

Commit

Permalink
Reduce unit test execution time (by 50%)
Browse files Browse the repository at this point in the history
  • Loading branch information
jordimas committed Jan 19, 2025
1 parent 30b43f6 commit 75ba6c6
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 36 deletions.
2 changes: 1 addition & 1 deletion open_dubbing/text_to_speech.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ def get_start_time_of_next_speech_utterance(
start: float,
end: float,
audio_file: str,
) -> int:
) -> float:
result = None
for utterance in utterance_metadata:
u_start = utterance["start"]
Expand Down
19 changes: 10 additions & 9 deletions tests/speech_to_text_faster_whisper_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,26 +18,27 @@


class TestTextToSpeechFasterWhisper:
@classmethod
def setup_class(cls):
"""Set up the class by loading the model once."""
cls.stt = SpeechToTextFasterWhisper()
cls.stt.load_model()

def test_transcribe(self):
data_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(data_dir, "data/this_is_a_test.mp3")
stt = SpeechToTextFasterWhisper()
stt.load_model()
text = stt._transcribe(vocals_filepath=filename, source_language_iso_639_1="en")
text = self.stt._transcribe(
vocals_filepath=filename, source_language_iso_639_1="en"
)
assert text.strip() == "This is a test."

def test_detect_language(self):
data_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(data_dir, "data/this_is_a_test.mp3")
stt = SpeechToTextFasterWhisper()
stt.load_model()
language = stt.detect_language(filename)
language = self.stt.detect_language(filename)
assert language == "ell"

def test_get_languages(self):
stt = SpeechToTextFasterWhisper()
stt.load_model()
languages = stt.get_languages()
languages = self.stt.get_languages()
assert len(languages) == 100
assert "eng" in languages
26 changes: 13 additions & 13 deletions tests/speech_to_text_whisper_transformers_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,26 +21,26 @@

class TestSpeechToTextWhisperTransformers:

@classmethod
def setup_class(cls):
cls.data_dir = os.path.dirname(os.path.realpath(__file__))
cls.stt = SpeechToTextWhisperTransformers()
cls.stt.load_model()

def test_transcribe(self):
data_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(data_dir, "data/this_is_a_test.mp3")
stt = SpeechToTextWhisperTransformers()
stt.load_model()
text = stt._transcribe(vocals_filepath=filename, source_language_iso_639_1="en")
filename = os.path.join(self.data_dir, "data/this_is_a_test.mp3")
text = self.stt._transcribe(
vocals_filepath=filename, source_language_iso_639_1="en"
)
assert text.strip() == "This is a test."

def test_detect_language(self):
data_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(data_dir, "data/this_is_a_test.mp3")
stt = SpeechToTextWhisperTransformers()
stt.load_model()
language = stt.detect_language(filename)
filename = os.path.join(self.data_dir, "data/this_is_a_test.mp3")
language = self.stt.detect_language(filename)
# Returns 'ell' instead of 'eng'. We check the size only
assert len(language) == 3

def test_get_languages(self):
stt = SpeechToTextWhisperTransformers()
stt.load_model()
languages = stt.get_languages()
languages = self.stt.get_languages()
assert len(languages) == 100
assert "eng" in languages
2 changes: 0 additions & 2 deletions tests/text_to_speech_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,11 +233,9 @@ def test_dub_utterances_modified_one_modification_decrease_speed(self):
# Mock dependencies
utterance_metadata = self._get_dub_metadata()
utterance_metadata[1]["speed"] = "1.2"
print(f"utterance_metadata: {utterance_metadata}")

update_metadata = self._get_dub_metadata()
del update_metadata[0]
print(f"update_metadata: {update_metadata}")

output_directory = "/output"
target_language = "eng"
Expand Down
2 changes: 1 addition & 1 deletion tests/utterance_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from open_dubbing.utterance import Utterance


class TestUterrance:
class TestUtterance:

def testrun_save_utterance(self):
with tempfile.TemporaryDirectory() as temp_dir:
Expand Down
18 changes: 8 additions & 10 deletions tests/voice_gender_classifier_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,14 @@
import pytest
import torch

from open_dubbing.voice_gender_classifier import ( # Assuming this is the file name
VoiceGenderClassifier,
)
from open_dubbing.voice_gender_classifier import VoiceGenderClassifier


class TestVoiceGenderClassifier:
@classmethod
def setup_class(cls):
"""Set up the VoiceGenderClassifier model once for all tests."""
cls.classifier = VoiceGenderClassifier()

@pytest.mark.parametrize(
"logits_gender, expected_gender",
Expand All @@ -33,17 +35,14 @@ class TestVoiceGenderClassifier:
],
)
def test_interpret_gender(self, logits_gender, expected_gender):
classifier = VoiceGenderClassifier()
predicted_gender = classifier._interpret_gender(logits_gender)

predicted_gender = self.classifier._interpret_gender(logits_gender)
assert predicted_gender == expected_gender

def test_load_audio_file(self):
data_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(data_dir, "data/this_is_a_test.mp3")

classifier = VoiceGenderClassifier()
samples, target_sampling_rate = classifier.load_audio_file(filename)
samples, target_sampling_rate = self.classifier.load_audio_file(filename)
sample_sum = np.sum(samples)
assert 16000 == target_sampling_rate
assert np.isclose(sample_sum, -19.797165, atol=2)
Expand All @@ -52,6 +51,5 @@ def test_get_gender_for_file(self):
data_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(data_dir, "data/this_is_a_test.mp3")

classifier = VoiceGenderClassifier()
gender = classifier.get_gender_for_file(filename)
gender = self.classifier.get_gender_for_file(filename)
assert "Male" == gender

0 comments on commit 75ba6c6

Please sign in to comment.