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
|