File size: 1,237 Bytes
f25c867
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/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()