edge-tts/examples/sync_audio_generation_in_async_context.py
lzieniew 6355b32f0c
Add sync versions of stream and save methods (#215)
* Add sync versions of stream and save methods

In order to provide synchronous interface to the library

* Fix save_sync() failing to use metadata_fname and fix typing issues

Signed-off-by: rany <ranygh@riseup.net>

---------

Signed-off-by: rany <ranygh@riseup.net>
Co-authored-by: rany <ranygh@riseup.net>
2024-04-21 13:47:38 +03:00

37 lines
810 B
Python

#!/usr/bin/env python3
"""
This example shows that sync version of save function also works when run from
a sync function called itself from an async function.
The simple implementation of save_sync() with only asyncio.run would fail in this scenario,
that's why ThreadPoolExecutor is used in implementation.
"""
import asyncio
import edge_tts
TEXT = "Hello World!"
VOICE = "en-GB-SoniaNeural"
OUTPUT_FILE = "test.mp3"
def sync_main() -> None:
"""Main function"""
communicate = edge_tts.Communicate(TEXT, VOICE)
communicate.save_sync(OUTPUT_FILE)
async def amain() -> None:
"""Main function"""
sync_main()
if __name__ == "__main__":
loop = asyncio.get_event_loop_policy().get_event_loop()
try:
loop.run_until_complete(amain())
finally:
loop.close()