File size: 2,642 Bytes
d08a15b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e0f42b2
 
 
 
 
 
 
d08a15b
 
 
 
 
 
 
 
 
 
 
 
 
 
4e071d3
 
 
 
d846f85
4e071d3
d08a15b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
"""
命令行参数处理模块

提供命令行参数解析和配置功能
"""

import argparse

from voice_dialogue.config.speaker_config import update_argument_parser_speaker_choices


def create_argument_parser():
    """创建命令行参数解析器"""
    # 动态获取可用说话人列表
    available_speakers = update_argument_parser_speaker_choices()

    parser = argparse.ArgumentParser(
        description="VoiceDialogue - 语音对话系统",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog=f"""
示例用法:
  # 启动命令行模式(默认)
  python main.py

  # 启动命令行模式并指定参数
  python main.py --mode cli --language zh --speaker 沈逸

  # 启动API服务器
  python main.py --mode api

  # 启动API服务器并指定端口
  python main.py --mode api --port 9000

  # 启动API服务器并启用热重载(开发模式)
  python main.py --mode api --port 8000 --reload

支持的说话人:
  {', '.join(available_speakers)}
        """
    )

    # 运行模式选择
    parser.add_argument(
        '--mode', '-m',
        choices=['cli', 'api'],
        default='cli',
        help='运行模式: cli=命令行模式, api=API服务器模式 (默认: cli)'
    )

    parser.add_argument(
        '--debug',
        action='store_true',
        default=False,
        help='启动debug模式'
    )

    # 命令行模式参数
    cli_group = parser.add_argument_group('命令行模式参数')
    cli_group.add_argument(
        '--language', '-l',
        choices=['zh', 'en'],
        default='zh',
        help='用户语言: zh=中文, en=英文 (默认: zh)'
    )
    cli_group.add_argument(
        '--speaker', '-s',
        choices=available_speakers,
        default='沈逸' if '沈逸' in available_speakers else (available_speakers[0] if available_speakers else '沈逸'),
        help='TTS说话人 (默认: 沈逸)'
    )
    cli_group.add_argument(
        '--disable-echo-cancellation',
        action='store_true',
        default=False,
        help='禁用回声消除功能 (默认: 不禁用)'
    )

    # API服务器模式参数
    api_group = parser.add_argument_group('API服务器模式参数')
    api_group.add_argument(
        '--host',
        default='0.0.0.0',
        help='服务器主机地址 (默认: 0.0.0.0)'
    )
    api_group.add_argument(
        '--port', '-p',
        type=int,
        default=8000,
        help='服务器端口 (默认: 8000)'
    )
    api_group.add_argument(
        '--reload',
        action='store_true',
        help='启用热重载(开发模式)'
    )

    return parser