#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
配置模块 - 处理命令行参数和配置项
"""

import argparse


def parse_args():
    """
    解析命令行参数

    返回:
        argparse.Namespace: 解析后的参数对象
    """
    parser = argparse.ArgumentParser(description="FunASR WebSocket服务器")

    # 服务器配置
    parser.add_argument(
        "--host",
        type=str,
        default="0.0.0.0",
        help="服务器主机地址，例如：localhost, 0.0.0.0",
    )
    parser.add_argument("--port", type=int, default=10095, help="WebSocket服务器端口")

    # SSL配置
    parser.add_argument("--certfile", type=str, default="", help="SSL证书文件路径")
    parser.add_argument("--keyfile", type=str, default="", help="SSL密钥文件路径")

    # ASR模型配置
    parser.add_argument(
        "--asr_model",
        type=str,
        default="iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch",
        help="离线ASR模型（从ModelScope获取）",
    )
    parser.add_argument(
        "--asr_model_revision", type=str, default="v2.0.4", help="离线ASR模型版本"
    )

    # 在线ASR模型配置
    parser.add_argument(
        "--asr_model_online",
        type=str,
        default="iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online",
        help="在线ASR模型（从ModelScope获取）",
    )
    parser.add_argument(
        "--asr_model_online_revision",
        type=str,
        default="v2.0.4",
        help="在线ASR模型版本",
    )

    # VAD模型配置
    parser.add_argument(
        "--vad_model",
        type=str,
        default="iic/speech_fsmn_vad_zh-cn-16k-common-pytorch",
        help="VAD语音活动检测模型（从ModelScope获取）",
    )
    parser.add_argument(
        "--vad_model_revision", type=str, default="v2.0.4", help="VAD模型版本"
    )

    # 标点符号模型配置
    parser.add_argument(
        "--punc_model",
        type=str,
        default="iic/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727",
        help="标点符号模型（从ModelScope获取）",
    )
    parser.add_argument(
        "--punc_model_revision", type=str, default="v2.0.4", help="标点符号模型版本"
    )

    # 硬件配置
    parser.add_argument("--ngpu", type=int, default=1, help="GPU数量，0表示仅使用CPU")
    parser.add_argument(
        "--device", type=str, default="cuda", help="设备类型：cuda或cpu"
    )
    parser.add_argument("--ncpu", type=int, default=4, help="CPU核心数")

    return parser.parse_args()


if __name__ == "__main__":
    args = parse_args()
    print("配置参数:")
    for arg in vars(args):
        print(f"  {arg}: {getattr(args, arg)}")
