audeering / auglib

Data augmentation for audio
https://audeering.github.io/auglib/
Other
11 stars 0 forks source link

Incorrect order of segments for `Augment.augment()` #32

Closed audeerington closed 2 months ago

audeerington commented 3 months ago

Augment.augment() can return the augmented segments in a different order than the input order.

Example:

import pandas as pd

import audb
import audformat
import auglib

db = audb.load(
    "emodb",
    media=["wav/03a01Fa.wav", "wav/03a01Nc.wav"],
    version="1.4.1",
    verbose=False,
    full_path=False,
)
df = pd.DataFrame(
    index=audformat.segmented_index(
        files=[db.files[0], db.files[1], db.files[0], db.files[1]],
        starts=[0.5, 0, 0, 0.5],
        ends=[1.0, 0.5, 0.5, 1.0],
    ),
)
print(df.index.get_level_values("file"))

transform = auglib.transform.PinkNoise(snr_db=10)
augment = auglib.Augment(transform)

augmented_df = augment.augment(
    df, data_root=db.root, remove_root=db.root, cache_root="cache"
)
print(augmented_df.index.get_level_values("file"))

Prints

Index(['wav/03a01Fa.wav', 'wav/03a01Nc.wav', 'wav/03a01Fa.wav',
       'wav/03a01Nc.wav'],
      dtype='string', name='file')
Index(['/home/user/cache/2b02f9b8/4915663582982473074/0/wav/03a01Fa-0.wav',
       '/home/user/cache/2b02f9b8/4915663582982473074/0/wav/03a01Fa-1.wav',
       '/home/user/cache/2b02f9b8/4915663582982473074/0/wav/03a01Nc-0.wav',
       '/home/user/cache/2b02f9b8/4915663582982473074/0/wav/03a01Nc-1.wav'],
      dtype='string', name='file')
hagenw commented 3 months ago

Thanks for reporting. This seems to be indeed an auglib related issue, as with audinterface it does not happen:

import audinterface

interface = audinterface.Process()
processed_df = interface.process_index(df.index, root=db.root)
print(df.index.get_level_values("file"))
print(processed_df.index.get_level_values("file"))

returns

Index(['wav/03a01Fa.wav', 'wav/03a01Nc.wav', 'wav/03a01Fa.wav',
       'wav/03a01Nc.wav'],
      dtype='string', name='file')
Index(['wav/03a01Fa.wav', 'wav/03a01Nc.wav', 'wav/03a01Fa.wav',
       'wav/03a01Nc.wav'],
      dtype='string', name='file')