hzeng412
Add external mic array support, UI i18n, glass settings redesign, and fixes
afd6c89
Raw
History Blame Contribute Delete
3.18 kB
"""
命令行参数处理模块
提供命令行参数解析和配置功能
"""
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='禁用回声消除功能 (默认: 不禁用)'
)
cli_group.add_argument(
'--input-device', '-i',
type=int,
default=None,
metavar='INDEX',
help='指定输入设备索引(如外置麦克风阵列)。多通道会自动降混为单声道;'
'指定后回声消除依赖设备硬件。用 --list-audio-devices 查看可用索引。'
)
cli_group.add_argument(
'--list-audio-devices',
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