File size: 1,273 Bytes
20c8fc2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import asyncio
import edge_tts
import sys
import os

async def generate_tts(text, output_file, voice="en-US-BrianMultilingualNeural"):
    communicate = edge_tts.Communicate(text, voice)
    await communicate.save(output_file)

if __name__ == "__main__":
    if len(sys.argv) < 3:
        print("Usage: python tts.py <text_or_minus_for_stdin> <output_file> [voice]")
        sys.exit(1)

    text_arg = sys.argv[1]
    output_file = sys.argv[2]
    voice = sys.argv[3] if len(sys.argv) > 3 else "en-US-BrianMultilingualNeural"

    if text_arg == "-":
        text = sys.stdin.read()
    else:
        text = text_arg

    # Ensure directory exists
    dir_name = os.path.dirname(output_file)
    if dir_name:
        os.makedirs(dir_name, exist_ok=True)

    try:
        asyncio.run(generate_tts(text, output_file, voice))
        # Verify file was created and has size
        if os.path.exists(output_file) and os.path.getsize(output_file) > 0:
            print(f"Audio saved to {output_file}")
        else:
            print(f"Error: File not created or empty: {output_file}", file=sys.stderr)
            sys.exit(1)
    except Exception as e:
        import traceback
        traceback.print_exc()
        print(f"Error: {e}", file=sys.stderr)
        sys.exit(1)