add streaming_tts.py example
This commit is contained in:
34
examples/streaming_tts.py
Normal file
34
examples/streaming_tts.py
Normal file
@@ -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())
|
||||||
Reference in New Issue
Block a user