From 4ace5a95b052d338947fc88809a440ccd55cf6b4 Mon Sep 17 00:00:00 2001
From: 游雁 <zhifu.gzf@alibaba-inc.com>
Date: 星期四, 16 十一月 2023 16:39:52 +0800
Subject: [PATCH] funasr pages

---
 funasr/build_utils/build_args.py |  189 +++++++++++++++++++++++++++-------------------
 1 files changed, 111 insertions(+), 78 deletions(-)

diff --git a/funasr/build_utils/build_args.py b/funasr/build_utils/build_args.py
index 4725c87..08018a7 100644
--- a/funasr/build_utils/build_args.py
+++ b/funasr/build_utils/build_args.py
@@ -1,6 +1,5 @@
-import argparse
-
 from funasr.models.ctc import CTC
+from funasr.utils import config_argparse
 from funasr.utils.get_default_kwargs import get_default_kwargs
 from funasr.utils.nested_dict_action import NestedDictAction
 from funasr.utils.types import int_or_none
@@ -8,82 +7,116 @@
 from funasr.utils.types import str_or_none
 
 
-def build_args(args, extra_task_params):
-    parser = argparse.ArgumentParser("Task related config")
-    # if args.task_name == "asr":
-    from funasr.build_utils.build_asr_model import class_choices_list
-    for class_choices in class_choices_list:
-        class_choices.add_arguments(parser)
-    parser.add_argument(
-        "--split_with_space",
-        type=str2bool,
-        default=True,
-        help="whether to split text using <space>",
-    )
-    parser.add_argument(
-        "--seg_dict_file",
-        type=str,
-        default=None,
-        help="seg_dict_file for text processing",
-    )
-    parser.add_argument(
-        "--input_size",
-        type=int_or_none,
-        default=None,
-        help="The number of input dimension of the feature",
-    )
-    parser.add_argument(
-        "--ctc_conf",
-        action=NestedDictAction,
-        default=get_default_kwargs(CTC),
-        help="The keyword arguments for CTC class.",
-    )
-    parser.add_argument(
-        "--cmvn_file",
-        type=str_or_none,
-        default=None,
-        help="The file path of noise scp file.",
-    )
+def build_args(args, parser, extra_task_params):
+    task_parser = config_argparse.ArgumentParser("Task related config")
+    if args.task_name == "asr":
+        from funasr.build_utils.build_asr_model import class_choices_list
+        for class_choices in class_choices_list:
+            class_choices.add_arguments(task_parser)
+        task_parser.add_argument(
+            "--split_with_space",
+            type=str2bool,
+            default=True,
+            help="whether to split text using <space>",
+        )
+        task_parser.add_argument(
+            "--seg_dict_file",
+            type=str,
+            default=None,
+            help="seg_dict_file for text processing",
+        )
+        task_parser.add_argument(
+            "--input_size",
+            type=int_or_none,
+            default=None,
+            help="The number of input dimension of the feature",
+        )
+        task_parser.add_argument(
+            "--ctc_conf",
+            action=NestedDictAction,
+            default=get_default_kwargs(CTC),
+            help="The keyword arguments for CTC class.",
+        )
+        task_parser.add_argument(
+            "--cmvn_file",
+            type=str_or_none,
+            default=None,
+            help="The path of cmvn file.",
+        )
 
-    # elif args.task_name == "pretrain":
-    #     from funasr.build_utils.build_pretrain_model import class_choices_list
-    #     for class_choices in class_choices_list:
-    #         class_choices.add_arguments(parser)
-    #     parser.add_argument(
-    #         "--input_size",
-    #         type=int_or_none,
-    #         default=None,
-    #         help="The number of input dimension of the feature",
-    #     )
-    #
-    # elif args.task_name == "lm":
-    #     from funasr.build_utils.build_lm_model import class_choices_list
-    #     for class_choices in class_choices_list:
-    #         class_choices.add_arguments(parser)
-    #
-    # elif args.task_name == "punc":
-    #     from funasr.build_utils.build_punc_model import class_choices_list
-    #     for class_choices in class_choices_list:
-    #         class_choices.add_arguments(parser)
-    #
-    # elif args.task_name == "vad":
-    #     from funasr.build_utils.build_vad_model import class_choices_list
-    #     for class_choices in class_choices_list:
-    #         class_choices.add_arguments(parser)
-    #     parser.add_argument(
-    #         "--input_size",
-    #         type=int_or_none,
-    #         default=None,
-    #         help="The number of input dimension of the feature",
-    #     )
-    #
-    # elif args.task_name == "diar":
-    #     from funasr.build_utils.build_diar_model import class_choices_list
-    #     for class_choices in class_choices_list:
-    #         class_choices.add_arguments(parser)
-    #
-    # else:
-    #     raise NotImplementedError("Not supported task: {}".format(args.task_name))
+    elif args.task_name == "pretrain":
+        from funasr.build_utils.build_pretrain_model import class_choices_list
+        for class_choices in class_choices_list:
+            class_choices.add_arguments(task_parser)
+        task_parser.add_argument(
+            "--input_size",
+            type=int_or_none,
+            default=None,
+            help="The number of input dimension of the feature",
+        )
+        task_parser.add_argument(
+            "--cmvn_file",
+            type=str_or_none,
+            default=None,
+            help="The path of cmvn file.",
+        )
 
-    task_args = parser.parse_args(extra_task_params)
+    elif args.task_name == "lm":
+        from funasr.build_utils.build_lm_model import class_choices_list
+        for class_choices in class_choices_list:
+            class_choices.add_arguments(task_parser)
+
+    elif args.task_name == "punc":
+        from funasr.build_utils.build_punc_model import class_choices_list
+        for class_choices in class_choices_list:
+            class_choices.add_arguments(task_parser)
+
+    elif args.task_name == "vad":
+        from funasr.build_utils.build_vad_model import class_choices_list
+        for class_choices in class_choices_list:
+            class_choices.add_arguments(task_parser)
+        task_parser.add_argument(
+            "--input_size",
+            type=int_or_none,
+            default=None,
+            help="The number of input dimension of the feature",
+        )
+        task_parser.add_argument(
+            "--cmvn_file",
+            type=str_or_none,
+            default=None,
+            help="The path of cmvn file.",
+        )
+
+    elif args.task_name == "diar":
+        from funasr.build_utils.build_diar_model import class_choices_list
+        for class_choices in class_choices_list:
+            class_choices.add_arguments(task_parser)
+        task_parser.add_argument(
+            "--input_size",
+            type=int_or_none,
+            default=None,
+            help="The number of input dimension of the feature",
+        )
+
+    elif args.task_name == "sv":
+        from funasr.build_utils.build_sv_model import class_choices_list
+        for class_choices in class_choices_list:
+            class_choices.add_arguments(task_parser)
+        task_parser.add_argument(
+            "--input_size",
+            type=int_or_none,
+            default=None,
+            help="The number of input dimension of the feature",
+        )
+
+    else:
+        raise NotImplementedError("Not supported task: {}".format(args.task_name))
+
+    for action in parser._actions:
+        if not any(action.dest == a.dest for a in task_parser._actions):
+            task_parser._add_action(action)
+
+    task_parser.set_defaults(**vars(args))
+    task_args = task_parser.parse_args(extra_task_params)
     return task_args

--
Gitblit v1.9.1