say-it-back / prerender.py
Tonykip's picture
Upload folder using huggingface_hub
5925b98 verified
Raw
History Blame Contribute Delete
1.63 kB
"""Pre-render the featured phrases (English -> Kalenjin -> Cheps WAV) and write
a phrasebook.json + audio/featured_*.wav bundle so they play back INSTANTLY in
the app (no live Modal call on the hot demo path). Run locally before deploy:
INFERENCE_TOKEN=... python prerender.py
"""
import hashlib
import json
import os
import requests
TRANSLATE_URL = "https://tonykipkemboi--kalenjin-cascade-api-textcascade-translate.modal.run"
TTS_URL = "https://tonykipkemboi--kalenjin-tts-serve-kalenjintts-fastapi-app.modal.run/synthesize"
TOKEN = os.environ["INFERENCE_TOKEN"]
FEATURED = [
"Thank you", "Good morning", "How are you?", "I love you",
"Water", "Milk", "My child", "Come and eat",
]
HERE = os.path.dirname(os.path.abspath(__file__))
AUDIO = os.path.join(HERE, "audio")
os.makedirs(AUDIO, exist_ok=True)
book = {}
for phrase in FEATURED:
t = requests.post(TRANSLATE_URL, json={"text": phrase}, timeout=70).json()
kal, sw = t.get("kalenjin", "").strip(), t.get("swahili", "").strip()
wav = requests.post(
TTS_URL, json={"text": kal},
headers={"Authorization": f"Bearer {TOKEN}"}, timeout=150,
).content
key = hashlib.sha256(phrase.encode()).hexdigest()[:12]
fname = f"featured_{key}.wav"
with open(os.path.join(AUDIO, fname), "wb") as f:
f.write(wav)
book[phrase] = {"kalenjin": kal, "swahili": sw, "wav": f"audio/{fname}"}
print(f" {phrase!r:22} -> {kal!r:28} ({len(wav)} bytes)")
with open(os.path.join(HERE, "phrasebook.json"), "w") as f:
json.dump(book, f, ensure_ascii=False, indent=2)
print(f"wrote phrasebook.json ({len(book)} phrases)")