import asyncio
import edge_tts

async def main():
    text = "In 216 BC, on the dust-swept plains of Cannae, Hannibal Barca executed the greatest tactical encirclement in military history."
    voice = "en-US-ChristopherNeural"
    output_audio = "output/narration_en.mp3"
    output_vtt = "output/narration_en.vtt"
    
    communicate = edge_tts.Communicate(text, voice, rate="-4%", pitch="-2Hz")
    submaker = edge_tts.SubMaker()
    
    with open(output_audio, "wb") as f:
        async for chunk in communicate.stream():
            if chunk["type"] == "audio":
                f.write(chunk["data"])
            elif chunk["type"] == "WordBoundary":
                submaker.feed(chunk)
                
    with open(output_vtt, "w", encoding="utf-8") as f:
        f.write(submaker.get_srt())
        
    print(f"[OK] Generated Narration: {output_audio}")
    print(f"[OK] Generated Subtitle (SRT): {output_vtt}")

if __name__ == "__main__":
    asyncio.run(main())
