Spaces:
Running
Running
#!/usr/bin/python3 | |
# -*- coding: utf-8 -*- | |
import argparse | |
import asyncio | |
import tempfile | |
import edge_tts | |
from project_settings import project_path | |
def get_args(): | |
parser = argparse.ArgumentParser() | |
parser.add_argument( | |
"--text", | |
default="学而时习之,不亦悦乎。", | |
type=str | |
) | |
parser.add_argument( | |
"--speaker", | |
default="zh-CN-XiaoxiaoNeural", | |
type=str | |
) | |
args = parser.parse_args() | |
return args | |
async def print_edge_voices(): | |
voices = await edge_tts.list_voices() | |
for voice in voices: | |
print(voice) | |
async def edge_text_to_speech(text: str, speaker: str): | |
communicate = edge_tts.Communicate(text, speaker) | |
with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_file: | |
tmp_path = tmp_file.name | |
await communicate.save(tmp_path) | |
print(tmp_path) | |
return f"Speech synthesis completed for: {text}", tmp_path | |
def main(): | |
args = get_args() | |
loop = asyncio.get_event_loop() | |
loop.run_until_complete(print_edge_voices()) | |
loop.run_until_complete(edge_text_to_speech( | |
text=args.text, | |
speaker=args.speaker, | |
)) | |
return | |
if __name__ == '__main__': | |
main() | |