Download tests/test_kaggle_runtime.py from suvradeepp/tiny-hinglish-turn-detector: direct link, hf CLI and curl.
- Browser
- Download file 2.57 kB
-
https://huggingface.co/suvradeepp/tiny-hinglish-turn-detector/resolve/main/tests/test_kaggle_runtime.py
- Command line
-
hf download hf://suvradeepp/tiny-hinglish-turn-detector/tests/test_kaggle_runtime.py
-
curl -L -o test_kaggle_runtime.py https://huggingface.co/suvradeepp/tiny-hinglish-turn-detector/resolve/main/tests/test_kaggle_runtime.py
2.57 kB
| from __future__ import annotations | |
| import importlib.util | |
| import sys | |
| import unittest | |
| from pathlib import Path | |
| import numpy as np | |
| from turn_detection.runtime.features import ( | |
| FrontendConfig as CanonicalFrontendConfig, | |
| ) | |
| from turn_detection.runtime.features import ( | |
| log_mel_spectrogram as canonical_log_mel_spectrogram, | |
| ) | |
| ROOT = Path(__file__).resolve().parents[1] | |
| MODULE_PATH = ROOT / "deployment" / "kaggle" / "turn_detector.py" | |
| SPEC = importlib.util.spec_from_file_location("kaggle_turn_detector", MODULE_PATH) | |
| if SPEC is None or SPEC.loader is None: # pragma: no cover - import machinery failure | |
| raise RuntimeError(f"cannot load {MODULE_PATH}") | |
| KAGGLE_RUNTIME = importlib.util.module_from_spec(SPEC) | |
| sys.modules[SPEC.name] = KAGGLE_RUNTIME | |
| SPEC.loader.exec_module(KAGGLE_RUNTIME) | |
| class KaggleRuntimeParityTest(unittest.TestCase): | |
| def test_flat_bundle_frontend_matches_canonical_runtime(self) -> None: | |
| canonical_config = CanonicalFrontendConfig(max_seconds=4.0) | |
| kaggle_config = KAGGLE_RUNTIME.FrontendConfig(**canonical_config.to_dict()) | |
| for sample_rate in (8_000, 16_000, 48_000): | |
| timeline = np.arange(round(sample_rate * 1.37), dtype=np.float32) / sample_rate | |
| signal = 0.13 * np.sin(2.0 * np.pi * 337.0 * timeline) | |
| stereo = np.stack((signal, signal * 0.7), axis=1) | |
| expected_features, expected_mask = canonical_log_mel_spectrogram( | |
| stereo, | |
| sample_rate, | |
| canonical_config, | |
| ) | |
| actual_features, actual_mask = KAGGLE_RUNTIME.log_mel_spectrogram( | |
| stereo, | |
| sample_rate, | |
| kaggle_config, | |
| ) | |
| np.testing.assert_array_equal(actual_features, expected_features) | |
| np.testing.assert_array_equal(actual_mask, expected_mask) | |
| def test_controller_threshold_relaxation_matches_serialized_policy(self) -> None: | |
| detector = object.__new__(KAGGLE_RUNTIME.TurnDetector) | |
| detector.controller = KAGGLE_RUNTIME.ControllerConfig( | |
| endpoint_threshold=0.74, | |
| long_pause_threshold=0.56, | |
| min_silence_ms=200.0, | |
| relax_after_ms=800.0, | |
| max_silence_ms=1_800.0, | |
| required_confirmations=1, | |
| ) | |
| self.assertEqual(detector.threshold_for_silence(300.0), 0.74) | |
| self.assertAlmostEqual(detector.threshold_for_silence(1_300.0), 0.65) | |
| self.assertEqual(detector.threshold_for_silence(2_000.0), 0.56) | |
| if __name__ == "__main__": | |
| unittest.main() | |