ソースを参照

fixbug for sd and sv

志浩 3 年 前
コミット
267dddcdbb
2 ファイル変更12 行追加3 行削除
  1. 4 2
      funasr/bin/diar_inference_launch.py
  2. 8 1
      funasr/bin/sond_inference.py

+ 4 - 2
funasr/bin/diar_inference_launch.py

@@ -135,8 +135,10 @@ def inference_launch(mode, **kwargs):
             "sv_train_config": "sv.yaml",
             "sv_model_file": "sv.pth",
         }
-        if "param_dict" in kwargs:
-            kwargs["param_dict"].update(param_dict)
+        if "param_dict" in kwargs and kwargs["param_dict"] is not None:
+            for key in param_dict:
+                if key not in kwargs["param_dict"]:
+                    kwargs["param_dict"][key] = param_dict[key]
         else:
             kwargs["param_dict"] = param_dict
         return inference_modelscope(**kwargs)

+ 8 - 1
funasr/bin/sond_inference.py

@@ -33,6 +33,8 @@ from funasr.utils.types import str2triple_str
 from funasr.utils.types import str_or_none
 from scipy.ndimage import median_filter
 from funasr.utils.misc import statistic_model_parameters
+from funasr.datasets.iterable_dataset import load_bytes
+
 
 class Speech2Diarization:
     """Speech2Xvector class
@@ -257,6 +259,9 @@ def inference_modelscope(
         assert "sv_model_file" in param_dict, "sv_model_file must be provided in param_dict."
         sv_train_config = param_dict["sv_train_config"]
         sv_model_file = param_dict["sv_model_file"]
+        if "model_dir" in param_dict:
+            sv_train_config = os.path.join(param_dict["model_dir"], sv_train_config)
+            sv_model_file = os.path.join(param_dict["model_dir"], sv_model_file)
         from funasr.bin.sv_inference import Speech2Xvector
         speech2xvector_kwargs = dict(
             sv_train_config=sv_train_config,
@@ -320,7 +325,9 @@ def inference_modelscope(
                 def prepare_dataset():
                     for idx, example in enumerate(raw_inputs):
                         # read waveform file
-                        example = [soundfile.read(x)[0] if isinstance(example[0], str) else x
+                        example = [load_bytes(x) if isinstance(x, bytes) else x
+                                   for x in example]
+                        example = [soundfile.read(x)[0] if isinstance(x, str) else x
                                    for x in example]
                         # convert torch tensor to numpy array
                         example = [x.numpy() if isinstance(example[0], torch.Tensor) else x