mirror of
https://github.com/rany2/edge-tts
synced 2024-11-22 01:45:02 +00:00
commit
2a8f90761f
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@ -15,7 +15,7 @@ jobs:
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: 3.7.4
|
||||
python-version: 3.11
|
||||
architecture: x64
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
|
@ -85,5 +85,7 @@ It is possible to use the `edge-tts` module directly from Python. For a list of
|
||||
|
||||
* https://github.com/rany2/edge-tts/blob/master/examples/basic_generation.py
|
||||
* https://github.com/rany2/edge-tts/blob/master/examples/dynamic_voice_selection.py
|
||||
* https://github.com/rany2/edge-tts/blob/master/examples/streaming_tts.py
|
||||
* https://github.com/rany2/edge-tts/blob/master/examples/streaming_tts_with_subtitles.py
|
||||
* https://github.com/rany2/edge-tts/blob/master/src/edge_tts/util.py
|
||||
* https://github.com/hasscc/hass-edge-tts/blob/main/custom_components/edge_tts/tts.py
|
||||
|
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())
|
35
examples/streaming_tts_with_subtitles.py
Normal file
35
examples/streaming_tts_with_subtitles.py
Normal file
@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
"""
|
||||
Streaming TTS example with subtitles.
|
||||
|
||||
This example is similar to the example streaming_tts.py, but it shows
|
||||
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"
|
||||
WEBVTT_FILE = "test.vtt"
|
||||
|
||||
communicate = edge_tts.Communicate(TEXT, VOICE)
|
||||
submaker = edge_tts.SubMaker()
|
||||
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":
|
||||
submaker.create_sub((chunk["offset"], chunk["duration"]), chunk["text"])
|
||||
|
||||
with open(WEBVTT_FILE, "w", encoding="utf-8") as file:
|
||||
file.write(submaker.generate_subs())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.get_event_loop().run_until_complete(main())
|
Loading…
Reference in New Issue
Block a user