Spaces:
Running
Running
| from __future__ import annotations | |
| from types import SimpleNamespace | |
| from app.services.whisper_service import WhisperService | |
| class FakeWhisperModel: | |
| def transcribe(self, path, **kwargs): | |
| segments = iter( | |
| [ | |
| SimpleNamespace(id=0, start=0.0, end=1.25, text=" Hello"), | |
| SimpleNamespace(id=1, start=1.25, end=2.0, text=" world"), | |
| ] | |
| ) | |
| info = SimpleNamespace(language="en", language_probability=0.99, duration=2.0) | |
| return segments, info | |
| async def test_whisper_writes_srt_without_loading_real_model(settings, tmp_path) -> None: | |
| service = WhisperService(settings) | |
| service._models["tiny"] = FakeWhisperModel() | |
| media = tmp_path / "audio.wav" | |
| media.write_bytes(b"test") | |
| result = await service.transcribe( | |
| media, tmp_path / "out", model_name="tiny", output_format="srt" | |
| ) | |
| assert result.path is not None | |
| content = result.path.read_text() | |
| assert "00:00:00,000 --> 00:00:01,250" in content | |
| assert "Hello" in content | |
| assert result.metadata["language"] == "en" | |