diff --git a/src/voice_transcriptor/services/transcription.py b/src/voice_transcriptor/services/transcription.py new file mode 100644 index 0000000..09fe9af --- /dev/null +++ b/src/voice_transcriptor/services/transcription.py @@ -0,0 +1,13 @@ +from voice_transcriptor.models import AppSettings, MediaInfo + + +class TranscriptionNotImplementedError(RuntimeError): + """Raised because transcription is outside the milestone 1 scope.""" + + +class TranscriptionService: + def transcribe(self, media: MediaInfo, settings: AppSettings) -> None: + del media, settings + raise TranscriptionNotImplementedError( + "Transcription is not implemented in milestone 1." + ) diff --git a/tests/test_transcription.py b/tests/test_transcription.py new file mode 100644 index 0000000..c3e907f --- /dev/null +++ b/tests/test_transcription.py @@ -0,0 +1,26 @@ +from pathlib import Path + +import pytest + +from voice_transcriptor.models import AppSettings, MediaInfo +from voice_transcriptor.services.transcription import ( + TranscriptionNotImplementedError, + TranscriptionService, +) + + +def test_transcribe_raises_milestone_exception_with_user_readable_message() -> None: + media = MediaInfo( + path=Path("sample.mp3"), + size_bytes=1, + duration_seconds=1.0, + audio_codec="mp3", + ) + settings = AppSettings( + model="gpt-4o-mini-transcribe", + language="en", + output_directory=Path("output"), + ) + + with pytest.raises(TranscriptionNotImplementedError, match="(?i)not implemented"): + TranscriptionService().transcribe(media, settings)