21 lines
1.0 KiB
Python
21 lines
1.0 KiB
Python
import unittest
|
|||
|
|
from dtw_alignment import aligned_segments
|
||
|
|
|
||
|
|
|
||
|
|
class DtwTests(unittest.TestCase):
|
||
|
|
def raw(self):
|
||
|
|
return {"transcription": [{"text": " Hello. Again!", "offsets": {"from": 0, "to": 1000},
|
||
|
|
"tokens": [{"id": 100, "text": " Hello.", "t_dtw": 20, "offsets": {"from": 900, "to": 100}},
|
||
|
|
{"id": 101, "text": " Again!", "t_dtw": 70}]}]}
|
||
|
|
|
||
|
|
def test_points_are_centiseconds_and_ordinary_reversal_not_repaired(self):
|
||
|
|
result = aligned_segments(self.raw(), 30000, 1000)
|
||
|
|
self.assertEqual([(r["start_ms"], r["end_ms"]) for r in result], [(30200, 30200), (30700, 30700)])
|
||
|
|
self.assertEqual("".join(r["text"] for r in result), " Hello. Again!")
|
||
|
|
|
||
|
|
def test_invalid_missing_fractional_and_nonmonotonic_points_rejected(self):
|
||
|
|
for point in [-1, 101, 1.5, None, 10]:
|
||
|
|
raw = self.raw()
|
||
|
|
raw["transcription"][0]["tokens"][1]["t_dtw"] = point
|
||
|
|
with self.assertRaises(ValueError):
|
||
|
|
aligned_segments(raw, 0, 1000)
|