gemma1b-tts-integration / tests /test_slice_longcat_codes.py
marcos
Add TTS integration workspace
86930e8
Raw
History Blame Contribute Delete
2.19 kB
import json
import unittest
from pathlib import Path
from tempfile import TemporaryDirectory
import torch
from speech_bridge_gemma.slice_longcat_codes import slice_codes
class SliceLongCatCodesTest(unittest.TestCase):
def test_slice_uses_manifest_subset_index(self) -> None:
with TemporaryDirectory() as tmp:
root = Path(tmp)
source = root / "source.pt"
manifest = root / "manifest.jsonl"
out = root / "out.pt"
torch.save(
{
"meta": {"codec": "longcat", "n_acoustic_codebooks": 1, "input_sample_rate": 16000},
"semantic_codes": [
torch.tensor([0, 0]),
torch.tensor([1, 1, 1]),
torch.tensor([2]),
],
"acoustic_codes": [
torch.tensor([[10, 10]]),
torch.tensor([[11, 11, 11]]),
torch.tensor([[12]]),
],
},
source,
)
rows = [
{"id": "row_b", "text": "texto b", "prompt": "pergunta b", "answer": "resposta b", "subset_index": 2, "duration": 1.0},
{"id": "row_a", "text": "texto a", "question": "pergunta a", "subset_index": 0, "duration_sec": 2.0},
]
manifest.write_text("\n".join(json.dumps(row) for row in rows) + "\n", encoding="utf-8")
summary = slice_codes(source, manifest, out, "subset_index")
payload = torch.load(out, map_location="cpu", weights_only=False)
self.assertEqual(summary["rows"], 2)
self.assertEqual(payload["semantic_codes"][0].tolist(), [2])
self.assertEqual(payload["semantic_codes"][1].tolist(), [0, 0])
self.assertEqual(payload["acoustic_codes"][0].tolist(), [[12]])
self.assertEqual(payload["meta"]["samples"][0]["id"], "row_b")
self.assertEqual(payload["meta"]["samples"][0]["frames"], 1)
self.assertEqual(payload["meta"]["samples"][1]["answer_text"], "texto a")
if __name__ == "__main__":
unittest.main()