Source code for nnmnkwii.util.files

from glob import glob
from os.path import join

import numpy as np
import pkg_resources
from nnmnkwii.datasets import FileDataSource


[docs]def example_label_file(phone_level=False): """Get path of example HTS-style full-context lable file. Corresponding audio file can be accessed by :func:`example_audio_file`. Args: phone_level: If True, returns phone-level aligment, otherwise state-level alignment. Returns: str: Path of the example label file. See also: :func:`example_audio_file` Examples: >>> from nnmnkwii.util import example_label_file >>> from nnmnkwii.io import hts >>> labels = hts.load(example_label_file()) """ name = "arctic_a0009" label_path = pkg_resources.resource_filename( __name__, "_example_data/{}_{}.lab".format(name, "phone" if phone_level else "state"), ) return label_path
[docs]def example_audio_file(): """Get path of audio file. Returns: str: Path of the example audio file. See also: :func:`example_label_file` Examples: >>> from nnmnkwii.util import example_audio_file >>> from scipy.io import wavfile >>> fs, x = wavfile.read(example_audio_file()) """ name = "arctic_a0009" wav_path = pkg_resources.resource_filename( __name__, "_example_data/{}.wav".format(name) ) return wav_path
[docs]def example_question_file(): """Get path of example question file. The question file was taken from Merlin_. .. _Merlin: https://github.com/CSTR-Edinburgh/merlin Returns: str: Path of the example audio file. Examples: >>> from nnmnkwii.util import example_question_file >>> from nnmnkwii.io import hts >>> binary_dict, numeric_dict = hts.load_question_set(example_question_file()) """ return pkg_resources.resource_filename( __name__, "_example_data/questions-radio_dnn_416.hed" )
class BinaryFileDataSource(FileDataSource): def __init__(self, data_root): self.data_root = data_root def collect_files(self): return sorted(glob(join(self.data_root, "*.npz"))) def collect_features(self, path): return np.load(path)["data"] class ExampleSLTArcticFileDataSource(BinaryFileDataSource): SLT_DEMO_DATA_ROOT = pkg_resources.resource_filename( __name__, "_example_data/slt_arctic_demo_data" ) mgc_dim = 75 lf0_dim = 3 vuv_dim = 1 bap_dim = 3 fs = 16000 frame_period = 5 hop_length = 80 fftlen = 1024 alpha = 0.41 mgc_start_idx = 0 lf0_start_idx = 75 vuv_start_idx = 78 bap_start_idx = 79 windows = [ (0, 0, np.array([1.0])), (1, 1, np.array([-0.5, 0.0, 0.5])), (1, 1, np.array([1.0, -2.0, 1.0])), ] def __init__(self, directory): super(ExampleSLTArcticFileDataSource, self).__init__( join(self.SLT_DEMO_DATA_ROOT, directory) )
[docs]def example_file_data_sources_for_duration_model(): """Get file data sources for duration model training. Returns: tuple: Tuple of :obj:`FileDataSource` s for example data. Examples: >>> from nnmnkwii.util import example_file_data_sources_for_duration_model >>> from nnmnkwii.datasets import FileSourceDataset >>> X, Y = example_file_data_sources_for_duration_model() >>> X, Y = FileSourceDataset(X), FileSourceDataset(Y) >>> for x, y in zip(X, Y): ... print(x.shape, y.shape) ... (35, 416) (35, 5) (40, 416) (40, 5) (39, 416) (39, 5) """ X = ExampleSLTArcticFileDataSource("X_duration") Y = ExampleSLTArcticFileDataSource("Y_duration") return X, Y
[docs]def example_file_data_sources_for_acoustic_model(): """Get file data sources for acoustic model training Returns: tuple: Tuple of :obj:`FileDataSource` s for example data. Examples: >>> from nnmnkwii.util import example_file_data_sources_for_acoustic_model >>> from nnmnkwii.datasets import FileSourceDataset >>> X, Y = example_file_data_sources_for_acoustic_model() >>> X, Y = FileSourceDataset(X), FileSourceDataset(Y) >>> for x, y in zip(X, Y): ... print(x.shape, y.shape) ... (578, 425) (578, 187) (675, 425) (675, 187) (606, 425) (606, 187) """ X = ExampleSLTArcticFileDataSource("X_acoustic") Y = ExampleSLTArcticFileDataSource("Y_acoustic") return X, Y