如何将 .wav 文件目录添加到 Kedro 数据目录?
How do I add a directory of .wav files to the Kedro data catalogue?
这是我第一次尝试使用 Kedro 包。
我在 s3 存储桶中有一个 .wav 文件列表,我很想知道如何在 Kedro 数据目录中使用它们。
有什么想法吗?
我认为目前没有处理 .wav
文件的数据集格式。您需要构建一个 custom dataset that uses something like Wave - 没有听起来那么多工作!
这将使您能够在您的目录中执行类似的操作:
dataset:
type: my_custom_path.WaveDataSet
filepath: path/to/individual/wav_file.wav # this can be a s3://url
然后您可以在您的 Kedro 管道中本地访问您的 WAV 数据。您可以为每个 .wav
文件执行此操作。
如果您希望能够访问整个文件夹的 wav 文件,您可能想要探索“包装器”数据集的概念,例如 PartitionedDataSet whose usage guide 可以在文档中找到。
这有效:
import pandas as pd
from pathlib import Path, PurePosixPath
from kedro.io import AbstractDataSet
class WavFile(AbstractDataSet):
'''Used to load a .wav file'''
def __init__(self, filepath):
self._filepath = PurePosixPath(filepath)
def _load(self) -> pd.DataFrame:
df = pd.DataFrame({'file': [self._filepath],
'data': [load_wav(self._filepath)]})
return df
def _save(self, df: pd.DataFrame) -> None:
df.to_csv(str(self._filepath))
def _exists(self) -> bool:
return Path(self._filepath.as_posix()).exists()
def _describe(self):
return dict(filepath=self._filepath)
class WavFiles(PartitionedDataSet):
'''Replaces the PartitionedDataSet.load() method to return a DataFrame.'''
def load(self)->pd.DataFrame:
'''Returns dataframe'''
dict_of_data = super().load()
df = pd.concat(
[delayed() for delayed in dict_of_data.values()]
)
return df
my_partitioned_dataset = WavFiles(
path="path/to/folder/of/wav/files/",
dataset=WavFile,
)
my_partitioned_dataset.load()
这是我第一次尝试使用 Kedro 包。
我在 s3 存储桶中有一个 .wav 文件列表,我很想知道如何在 Kedro 数据目录中使用它们。
有什么想法吗?
我认为目前没有处理 .wav
文件的数据集格式。您需要构建一个 custom dataset that uses something like Wave - 没有听起来那么多工作!
这将使您能够在您的目录中执行类似的操作:
dataset:
type: my_custom_path.WaveDataSet
filepath: path/to/individual/wav_file.wav # this can be a s3://url
然后您可以在您的 Kedro 管道中本地访问您的 WAV 数据。您可以为每个 .wav
文件执行此操作。
如果您希望能够访问整个文件夹的 wav 文件,您可能想要探索“包装器”数据集的概念,例如 PartitionedDataSet whose usage guide 可以在文档中找到。
这有效:
import pandas as pd
from pathlib import Path, PurePosixPath
from kedro.io import AbstractDataSet
class WavFile(AbstractDataSet):
'''Used to load a .wav file'''
def __init__(self, filepath):
self._filepath = PurePosixPath(filepath)
def _load(self) -> pd.DataFrame:
df = pd.DataFrame({'file': [self._filepath],
'data': [load_wav(self._filepath)]})
return df
def _save(self, df: pd.DataFrame) -> None:
df.to_csv(str(self._filepath))
def _exists(self) -> bool:
return Path(self._filepath.as_posix()).exists()
def _describe(self):
return dict(filepath=self._filepath)
class WavFiles(PartitionedDataSet):
'''Replaces the PartitionedDataSet.load() method to return a DataFrame.'''
def load(self)->pd.DataFrame:
'''Returns dataframe'''
dict_of_data = super().load()
df = pd.concat(
[delayed() for delayed in dict_of_data.values()]
)
return df
my_partitioned_dataset = WavFiles(
path="path/to/folder/of/wav/files/",
dataset=WavFile,
)
my_partitioned_dataset.load()