From 94de39dde2e616a01683c518023d0fab72b4e103 Mon Sep 17 00:00:00 2001
From: 游雁 <zhifu.gzf@alibaba-inc.com>
Date: 星期一, 19 二月 2024 22:21:50 +0800
Subject: [PATCH] aishell example

---
 funasr/datasets/audio_datasets/datasets.py |   33 ++++++++++++++++++++-------------
 1 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/funasr/datasets/audio_datasets/datasets.py b/funasr/datasets/audio_datasets/datasets.py
index 5af33fc..ab08fb0 100644
--- a/funasr/datasets/audio_datasets/datasets.py
+++ b/funasr/datasets/audio_datasets/datasets.py
@@ -19,15 +19,15 @@
                   **kwargs):
         super().__init__()
         index_ds_class = tables.index_ds_classes.get(index_ds)
-        self.index_ds = index_ds_class(path)
+        self.index_ds = index_ds_class(path, **kwargs)
         preprocessor_speech = kwargs.get("preprocessor_speech", None)
         if preprocessor_speech:
-            preprocessor_speech_class = tables.preprocessor_speech_classes.get(preprocessor_speech)
+            preprocessor_speech_class = tables.preprocessor_classes.get(preprocessor_speech)
             preprocessor_speech = preprocessor_speech_class(**kwargs.get("preprocessor_speech_conf"))
         self.preprocessor_speech = preprocessor_speech
         preprocessor_text = kwargs.get("preprocessor_text", None)
         if preprocessor_text:
-            preprocessor_text_class = tables.preprocessor_text_classes.get(preprocessor_text)
+            preprocessor_text_class = tables.preprocessor_classes.get(preprocessor_text)
             preprocessor_text = preprocessor_text_class(**kwargs.get("preprocessor_text_conf"))
         self.preprocessor_text = preprocessor_text
         
@@ -57,15 +57,20 @@
         source = item["source"]
         data_src = load_audio_text_image_video(source, fs=self.fs)
         if self.preprocessor_speech:
-            data_src = self.preprocessor_speech(data_src)
-        speech, speech_lengths = extract_fbank(data_src, data_type=self.data_type, frontend=self.frontend) # speech: [b, T, d]
+            data_src = self.preprocessor_speech(data_src, fs=self.fs)
+        speech, speech_lengths = extract_fbank(data_src, data_type=self.data_type, frontend=self.frontend, is_final=True) # speech: [b, T, d]
 
         target = item["target"]
         if self.preprocessor_text:
             target = self.preprocessor_text(target)
-        ids = self.tokenizer.encode(target)
+        if self.tokenizer:
+            ids = self.tokenizer.encode(target)
+            text = torch.tensor(ids, dtype=torch.int64)
+        else:
+            ids = target
+            text = ids
         ids_lengths = len(ids)
-        text, text_lengths = torch.tensor(ids, dtype=torch.int64), torch.tensor([ids_lengths], dtype=torch.int32)
+        text_lengths = torch.tensor([ids_lengths], dtype=torch.int32)
 
         return {"speech": speech[0, :, :],
                 "speech_lengths": speech_lengths,
@@ -83,11 +88,13 @@
                 outputs[key].append(sample[key])
 
         for key, data_list in outputs.items():
-            if data_list[0].dtype == torch.int64:
-
-                pad_value = self.int_pad_value
-            else:
-                pad_value = self.float_pad_value
-            outputs[key] = torch.nn.utils.rnn.pad_sequence(data_list, batch_first=True, padding_value=pad_value)
+            if isinstance(data_list[0], torch.Tensor):
+                if data_list[0].dtype == torch.int64:
+    
+                    pad_value = self.int_pad_value
+                else:
+                    pad_value = self.float_pad_value
+                
+                outputs[key] = torch.nn.utils.rnn.pad_sequence(data_list, batch_first=True, padding_value=pad_value)
         return outputs
 

--
Gitblit v1.9.1