diff --git a/examples/streaming_tts.py b/examples/streaming_tts.py new file mode 100644 index 0000000..69b3815 --- /dev/null +++ b/examples/streaming_tts.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 + +""" +Streaming TTS example. + +This example shows how to stream the audio data from the TTS engine, +and how to get the WordBoundary events from the engine (which could +be ignored if not needed). + +The example streaming_tts_with_subtitles.py shows how to use the +WordBoundary events to create subtitles using SubMaker. +""" + +import asyncio + +import edge_tts + + +async def main() -> None: + TEXT = "Hello World!" + VOICE = "en-GB-SoniaNeural" + OUTPUT_FILE = "test.mp3" + + communicate = edge_tts.Communicate(TEXT, VOICE) + with open(OUTPUT_FILE, "wb") as file: + async for chunk in communicate.stream(): + if chunk["type"] == "audio": + file.write(chunk["data"]) + elif chunk["type"] == "WordBoundary": + print(f"WordBoundary: {chunk}") + + +if __name__ == "__main__": + asyncio.get_event_loop().run_until_complete(main())