Processing: Acoustics

Overview

In this script, we will work with the audio files. We will extract the following features:

  • intensity
  • f0
  • spectral centroid / spectral center of gravity
  • formants
Code to load packages and prepare the environment
# packages
import os
import glob
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy
from scipy.signal import butter, filtfilt, sosfilt
import librosa
import parselmouth
import IPython.display as ipd
import seaborn as sns
import pickle
import random


curfolder = os.getcwd()
datasetfolder = os.path.join(curfolder, '..', '..', "data")

# PARSEL data
audiofolder = os.path.join(datasetfolder, 'Conversations') # last level for participant folder
wavtotrack = glob.glob(os.path.join(audiofolder, "*", "Raw_Audio", "*.wav"), recursive =True)
# keep only those that have conv-self in name (conv-other are the same so not necessary to duplicate)
wavtotrack = [x for x in wavtotrack if 'conv-self' in x]
print('Number of audio files found: ', len(wavtotrack))

# Create folder to save processed acoustic time series
ACfolder_processed = os.path.join(curfolder, "..", "..", 'TS_acoustics')
if not os.path.exists(ACfolder_processed):
    os.makedirs(ACfolder_processed)
Number of audio files found:  126

Here is an audio example

And here it is visualized as a waveform

#TODO: add spectogram

Custom functions
def chunk_and_smooth(df, var, window=25, order=3):
    """
    Processes a DataFrame by identifying contiguous non-NaN segments (chunks) in a specified column,
    then applies Savitzky-Golay smoothing to each sufficiently long chunk.

    Parameters:
    -----------
    df : pandas.DataFrame
        Input DataFrame containing the data to be processed
    var : str
        Name of the column to process
    window : int, optional
        Window length for Savitzky-Golay filter (default: 25)
    order : int, optional
        Polynomial order for Savitzky-Golay filter (default: 3)

    Returns:
    --------
    pandas.DataFrame
        Processed DataFrame with smoothed values in the specified column

    Notes:
    ------
    - Chunks are defined as contiguous non-NaN values in the specified column
    - Only chunks with length >= 5 are smoothed
    - The original DataFrame is not modified; a new DataFrame is returned
    """

    df['chunk'] = None

    chunk = 0
    for index, row in df.iterrows():
        if np.isnan(row[var]):
            continue
        else:
            df.loc[index, 'chunk'] = chunk
            # if the next value is NaN or this is the last row, increase the chunk
            if index == len(df)-1:
                continue
            elif np.isnan(df.loc[index+1, var]):
                chunk += 1

    # now we can smooth the spectralCent values in each chunk
    chunks = df['chunk'].unique()

    # skip if chunks are empty (that means that there is no var trace)
    if len(chunks) > 1:
        # ignore the first chunk (None)
        chunks = chunks[1:]
        for chunk in chunks:
            # get the rows of the chunk
            chunkrows = df[df['chunk'] == chunk].copy()
            # dont smooth chunks shorter than 5
            if len(chunkrows) < 5:
                continue
            else:
                # smooth var with savgol filter
                chunkrows[var] = scipy.signal.savgol_filter(chunkrows[var], window, order) 
                # put it back to the df
                df.loc[df['chunk'] == chunk, var] = chunkrows[var]

    # get rid of the chunk column
    df = df.drop('chunk', axis=1)

    return df

Extracting intensity (vocalic energy)

To extract the amplitude envelope of the acoustic signal, we follow a method by @tilsen_arvaniti13, adapted by @pouw24. We use a bandpass and 2nd order 10Hz low-pass zero-phase Butterworth filter.

Code with functions to extract the amplitude envelope
def butter_bandpass(lowcut, highcut, fs, order=2):
    """Design a Butterworth bandpass filter.

    Args:
        lowcut: Lower frequency bound of the bandpass filter (Hz)
        highcut: Upper frequency bound of the bandpass filter (Hz)
        fs: Sampling frequency (Hz)
        order: Order of the filter (default: 2)

    Returns:
        b: Numerator coefficients of the filter
        a: Denominator coefficients of the filter
    """
    nyquist = 0.5 * fs
    low = lowcut / nyquist
    high = highcut / nyquist
    b, a = butter(order, [low, high], btype='band')
    return b, a

def butter_bandpass_filtfilt(data, lowcut, highcut, fs, order=2):
    """Apply a Butterworth bandpass filter to the input data using filtfilt.

    Args:
        data: Input signal to be filtered
        lowcut: Lower frequency bound of the bandpass filter (Hz)
        highcut: Upper frequency bound of the bandpass filter (Hz)
        fs: Sampling frequency (Hz)
        order: Order of the filter (default: 2)

    Returns:
        y: Filtered signal
    """
    b, a = butter_bandpass(lowcut, highcut, fs, order=order)
    y = filtfilt(b, a, data)
    return y

# Define the lowpass filter
def butter_lowpass(cutoff, fs, order=2):
    """Design a Butterworth lowpass filter.

    Args:
        cutoff: Cutoff frequency of the lowpass filter (Hz)
        fs: Sampling frequency (Hz)
        order: Order of the filter (default: 2)

    Returns:
        b: Numerator coefficients of the filter
        a: Denominator coefficients of the filter
    """
    nyquist = 0.5 * fs
    normal_cutoff = cutoff / nyquist
    b, a = butter(order, normal_cutoff, btype='low')
    return b, a

def butter_lowpass_filtfilt(data, cutoff, fs, order=2):
    """Apply a Butterworth lowpass filter to the input data using filtfilt.

    Args:
        data: Input signal to be filtered
        cutoff: Cutoff frequency of the lowpass filter (Hz)
        fs: Sampling frequency (Hz)
        order: Order of the filter (default: 2)

    Returns:
        y: Filtered signal
    """
    b, a = butter_lowpass(cutoff, fs, order=order)
    y = filtfilt(b, a, data)
    return y

# Function to extract amplitude envelope
def amp_envelope(audiofilename):
    """Extract the amplitude envelope from an audio file.

    Args:
        audiofilename: Path to the audio file

    Returns:
        data: The amplitude envelope of the filtered signal
        sr: Sampling rate of the audio file
    """
    # load audio with librosa
    audio, sr = librosa.load(audiofilename, sr=None, mono=True)
    # Bandpass filter 400-4000Hz
    data = butter_bandpass_filtfilt(audio, 400, 4000, sr, order=2)
    # Lowpass filter 10Hz
    data = butter_lowpass_filtfilt(np.abs(data), 10, sr, order=2)

    return data, sr

Here is an example how the vocalic energy is extracted

Now we loop over all the audio files and extract the vocalic energy.

Note that we updated the pipeline such that we first extract envelope for all trials and sessions and only later normalize within participant and extract envelope change. Before, we normalized within a trial which was an unintended mistake.

env_error = []
desired_sr = 0.5

# Loop over wav files
for audiofile in wavtotrack:

    basename = os.path.basename(audiofile)
    print('working on ' + basename)

    # apply the function
    ampv, sr = amp_envelope(audiofile)

    # Extract and plot the original signal
    rawaudio, sr = librosa.load(audiofile, sr=None)

    # create a time vector
    time_env = np.arange(0, len(rawaudio)/sr, 1/sr)
    
    # Ensure the lengths match by padding ampv if necessary (Note that is a quick fix)
    if len(ampv) < len(time_env):
        ampv = np.pad(ampv, (0, len(time_env) - len(ampv)), mode='constant')
    elif len(ampv) > len(time_env):
        ampv = ampv[:len(time_env)]

    # the same for rawaudio
    if len(rawaudio) < len(time_env):
        rawaudio = np.pad(rawaudio, (0, len(time_env) - len(rawaudio)), mode='constant')
    elif len(rawaudio) > len(time_env):
        rawaudio = rawaudio[:len(time_env)]

    # save the audio and envelope
    try:
        audio = pd.DataFrame({'time': time_env, 'audio': rawaudio, 'envelope': ampv, 'filename': basename})
        # convert time to ms
        audio['time'] = audio['time'] * 1000

        # downsample to 500 Hz
        time_new = np.arange(0, max(audio['time']), 1/desired_sr)
        env_down = pd.DataFrame({'time': time_new})

        colstoint = audio.columns
        colstoint = [x for x in colstoint if 'time' not in x]
        colstoint = [x for x in colstoint if 'filename' not in x]

        for col in colstoint:
            env_down[col] = np.interp(env_down['time'], audio['time'], audio[col])

        env_down['filename'] = basename

        # write as csv
        env_down.to_csv(os.path.join(ACfolder_processed, 'env_' + basename + '_nenorm.csv'), index=False)

    except ValueError:
        print('ValueError: ' + basename)
        env_error.append(basename)
        continue

    #break
working on conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batch_10-PID_82_NaN.wav
working on conv-self-LPID_1-Batch_10-LPID_3-Batch_10-Batch_10-PID_82_NaN.wav
working on conv-self-LPID_1-Batch_10-LPID_4-Batch_10-Batch_10-PID_82_1651672469653.wav
working on conv-self-LPID_2-Batch_10-LPID_1-Batch_10-Batch_10-PID_78_3075.wav
working on conv-self-LPID_2-Batch_10-LPID_4-Batch_10-Batch_10-PID_78_1651674748055.wav
working on conv-self-LPID_2-Batch_10-LPID_6-Batch_10-Batch_10-PID_78_2850.wav
working on conv-self-LPID_3-Batch_10-LPID_1-Batch_10-Batch_10-PID_80_8100.wav
working on conv-self-LPID_3-Batch_10-LPID_2-Batch_10-Batch_10-PID_80_15475.wav
working on conv-self-LPID_3-Batch_10-LPID_4-Batch_10-Batch_10-PID_80_NaN.wav
working on conv-self-LPID_3-Batch_10-LPID_6-Batch_10-Batch_10-PID_80_NaN.wav
working on conv-self-LPID_4-Batch_10-LPID_1-Batch_10-Batch_10-PID_75_1651672469553.wav
working on conv-self-LPID_4-Batch_10-LPID_2-Batch_10-Batch_10-PID_75_1651674747930.wav
working on conv-self-LPID_4-Batch_10-LPID_3-Batch_10-Batch_10-PID_75_10025.wav
working on conv-self-LPID_4-Batch_10-LPID_6-Batch_10-Batch_10-PID_75_NaN.wav
working on conv-self-LPID_6-Batch_10-LPID_2-Batch_10-Batch_10-PID_79_NaN.wav
working on conv-self-LPID_6-Batch_10-LPID_3-Batch_10-Batch_10-PID_79_13625.wav
working on conv-self-LPID_6-Batch_10-LPID_4-Batch_10-Batch_10-PID_79_3775.wav
working on conv-self-LPID_1-Batch_4-LPID_3-Batch_4-Batch_4-PID_32_1651052144031.wav
working on conv-self-LPID_1-Batch_4-LPID_4-Batch_4-Batch_4-PID_32_1651049619527.wav
working on conv-self-LPID_1-Batch_4-LPID_5-Batch_4-Batch_4-PID_32_1651050501058.wav
working on conv-self-LPID_1-Batch_4-LPID_6-Batch_4-Batch_4-PID_32_1651051136023.wav
working on conv-self-LPID_3-Batch_4-LPID_1-Batch_4-Batch_4-PID_30_1651052144631.wav
working on conv-self-LPID_3-Batch_4-LPID_4-Batch_4-Batch_4-PID_30_1651052811470.wav
working on conv-self-LPID_3-Batch_4-LPID_5-Batch_4-Batch_4-PID_30_1651051092724.wav
working on conv-self-LPID_3-Batch_4-LPID_6-Batch_4-Batch_4-PID_30_1651049613133.wav
working on conv-self-LPID_4-Batch_4-LPID_3-Batch_4-Batch_4-PID_28_1651052810920.wav
working on conv-self-LPID_4-Batch_4-LPID_5-Batch_4-Batch_4-PID_28_1651052129159.wav
working on conv-self-LPID_4-Batch_4-LPID_6-Batch_4-Batch_4-PID_28_1651050428177.wav
working on conv-self-LPID_5-Batch_4-LPID_4-Batch_4-Batch_4-PID_29_1651052129009.wav
working on conv-self-LPID_5-Batch_4-LPID_6-Batch_4-Batch_4-PID_29_1651052831526.wav
working on conv-self-LPID_6-Batch_4-LPID_1-Batch_4-Batch_4-PID_33_1651051135973.wav
working on conv-self-LPID_6-Batch_4-LPID_3-Batch_4-Batch_4-PID_33_1651049611558.wav
working on conv-self-LPID_6-Batch_4-LPID_4-Batch_4-Batch_4-PID_33_1651050428027.wav
working on conv-self-LPID_6-Batch_4-LPID_5-Batch_4-Batch_4-PID_33_1651052831501.wav
working on conv-self-LPID_1-Batch_6-LPID_5-Batch_6-Batch_6-PID_42_NaN.wav
working on conv-self-LPID_1-Batch_6-LPID_6-Batch_6-Batch_6-PID_42_1651137244213.wav
working on conv-self-LPID_2-Batch_6-LPID_3-Batch_6-Batch_6-PID_43_1651136342847.wav
working on conv-self-LPID_2-Batch_6-LPID_4-Batch_6-Batch_6-PID_43_1651137315981.wav
working on conv-self-LPID_2-Batch_6-LPID_5-Batch_6-Batch_6-PID_43_NaN.wav
working on conv-self-LPID_2-Batch_6-LPID_6-Batch_6-Batch_6-PID_43_3650.wav
working on conv-self-LPID_3-Batch_6-LPID_2-Batch_6-Batch_6-PID_46_1651136342797.wav
working on conv-self-LPID_3-Batch_6-LPID_4-Batch_6-Batch_6-PID_46_1651138760460.wav
working on conv-self-LPID_3-Batch_6-LPID_5-Batch_6-Batch_6-PID_46_1651137231817.wav
working on conv-self-LPID_3-Batch_6-LPID_6-Batch_6-Batch_6-PID_46_1651135243380.wav
working on conv-self-LPID_4-Batch_6-LPID_2-Batch_6-Batch_6-PID_47_1651137316181.wav
working on conv-self-LPID_4-Batch_6-LPID_3-Batch_6-Batch_6-PID_47_1651138803785.wav
working on conv-self-LPID_4-Batch_6-LPID_5-Batch_6-Batch_6-PID_47_2425.wav
working on conv-self-LPID_5-Batch_6-LPID_1-Batch_6-Batch_6-PID_44_8550.wav
working on conv-self-LPID_5-Batch_6-LPID_2-Batch_6-Batch_6-PID_44_5725.wav
working on conv-self-LPID_5-Batch_6-LPID_3-Batch_6-Batch_6-PID_44_1651137231867.wav
working on conv-self-LPID_5-Batch_6-LPID_4-Batch_6-Batch_6-PID_44_NaN.wav
working on conv-self-LPID_6-Batch_6-LPID_1-Batch_6-Batch_6-PID_49_1651137244138.wav
working on conv-self-LPID_6-Batch_6-LPID_2-Batch_6-Batch_6-PID_49_NaN.wav
working on conv-self-LPID_6-Batch_6-LPID_3-Batch_6-Batch_6-PID_49_1651135243405.wav
working on conv-self-LPID_6-Batch_6-LPID_4-Batch_6-Batch_6-PID_49_1651136381872.wav
working on conv-self-LPID_6-Batch_6-LPID_5-Batch_6-Batch_6-PID_49_1651138689759.wav
working on conv-self-LPID_1-Batch_7-LPID_3-Batch_7-Batch_7-PID_55_1651158248671.wav
working on conv-self-LPID_1-Batch_7-LPID_5-Batch_7-Batch_7-PID_55_NaN.wav
working on conv-self-LPID_1-Batch_7-LPID_6-Batch_7-Batch_7-PID_55_1651157435596.wav
working on conv-self-LPID_2-Batch_7-LPID_5-Batch_7-Batch_7-PID_51_NaN.wav
working on conv-self-LPID_3-Batch_7-LPID_1-Batch_7-Batch_7-PID_54_1651158248821.wav
working on conv-self-LPID_3-Batch_7-LPID_5-Batch_7-Batch_7-PID_54_37175.wav
working on conv-self-LPID_3-Batch_7-LPID_6-Batch_7-Batch_7-PID_54_NaN.wav
working on conv-self-LPID_4-Batch_7-LPID_6-Batch_7-Batch_7-PID_56_1651156229273.wav
working on conv-self-LPID_5-Batch_7-LPID_1-Batch_7-Batch_7-PID_100_86475.wav
working on conv-self-LPID_5-Batch_7-LPID_2-Batch_7-Batch_7-PID_100_36725.wav
working on conv-self-LPID_5-Batch_7-LPID_3-Batch_7-Batch_7-PID_100_NaN.wav
working on conv-self-LPID_6-Batch_7-LPID_1-Batch_7-Batch_7-PID_57_1651157435821.wav
working on conv-self-LPID_6-Batch_7-LPID_3-Batch_7-Batch_7-PID_57_5725.wav
working on conv-self-LPID_6-Batch_7-LPID_4-Batch_7-Batch_7-PID_57_1651156230673.wav
working on conv-self-LPID_6-Batch_7-LPID_5-Batch_7-Batch_7-PID_57_NaN.wav
working on conv-self-LPID_1-Batch_8-LPID_2-Batch_8-Batch_8-PID_58_1651242872751.wav
working on conv-self-LPID_1-Batch_8-LPID_3-Batch_8-Batch_8-PID_58_1651242342774.wav
working on conv-self-LPID_1-Batch_8-LPID_4-Batch_8-Batch_8-PID_58_NaN.wav
working on conv-self-LPID_1-Batch_8-LPID_5-Batch_8-Batch_8-PID_58_1651240942058.wav
working on conv-self-LPID_2-Batch_8-LPID_1-Batch_8-Batch_8-PID_62_1651242872476.wav
working on conv-self-LPID_2-Batch_8-LPID_3-Batch_8-Batch_8-PID_62_1651240855561.wav
working on conv-self-LPID_2-Batch_8-LPID_4-Batch_8-Batch_8-PID_62_1651241608347.wav
working on conv-self-LPID_2-Batch_8-LPID_6-Batch_8-Batch_8-PID_62_1651242212432.wav
working on conv-self-LPID_3-Batch_8-LPID_1-Batch_8-Batch_8-PID_61_1651242342699.wav
working on conv-self-LPID_3-Batch_8-LPID_2-Batch_8-Batch_8-PID_61_1651240855686.wav
working on conv-self-LPID_3-Batch_8-LPID_4-Batch_8-Batch_8-PID_61_1651242860140.wav
working on conv-self-LPID_3-Batch_8-LPID_5-Batch_8-Batch_8-PID_61_3300.wav
working on conv-self-LPID_3-Batch_8-LPID_6-Batch_8-Batch_8-PID_61_1651239870949.wav
working on conv-self-LPID_4-Batch_8-LPID_1-Batch_8-Batch_8-PID_59_7350.wav
working on conv-self-LPID_4-Batch_8-LPID_2-Batch_8-Batch_8-PID_59_1651241608397.wav
working on conv-self-LPID_4-Batch_8-LPID_3-Batch_8-Batch_8-PID_59_1651242860115.wav
working on conv-self-LPID_4-Batch_8-LPID_5-Batch_8-Batch_8-PID_59_1651242227123.wav
working on conv-self-LPID_4-Batch_8-LPID_6-Batch_8-Batch_8-PID_59_NaN.wav
working on conv-self-LPID_5-Batch_8-LPID_1-Batch_8-Batch_8-PID_60_1651240943158.wav
working on conv-self-LPID_5-Batch_8-LPID_2-Batch_8-Batch_8-PID_60_1651239812821.wav
working on conv-self-LPID_5-Batch_8-LPID_3-Batch_8-Batch_8-PID_60_NaN.wav
working on conv-self-LPID_5-Batch_8-LPID_4-Batch_8-Batch_8-PID_60_1651242227923.wav
working on conv-self-LPID_5-Batch_8-LPID_6-Batch_8-Batch_8-PID_60_1651242858056.wav
working on conv-self-LPID_6-Batch_8-LPID_1-Batch_8-Batch_8-PID_65_59825.wav
working on conv-self-LPID_6-Batch_8-LPID_2-Batch_8-Batch_8-PID_65_1651242212682.wav
working on conv-self-LPID_6-Batch_8-LPID_3-Batch_8-Batch_8-PID_65_1651239870999.wav
working on conv-self-LPID_6-Batch_8-LPID_4-Batch_8-Batch_8-PID_65_6925.wav
working on conv-self-LPID_6-Batch_8-LPID_5-Batch_8-Batch_8-PID_65_1651242857331.wav
working on conv-self-LPID_1-Batch_9-LPID_2-Batch_9-Batch_9-PID_71_NaN.wav
working on conv-self-LPID_1-Batch_9-LPID_4-Batch_9-Batch_9-PID_71_1651497873460.wav
working on conv-self-LPID_1-Batch_9-LPID_5-Batch_9-Batch_9-PID_71_1651498566567.wav
working on conv-self-LPID_1-Batch_9-LPID_6-Batch_9-Batch_9-PID_71_1651499147485.wav
working on conv-self-LPID_2-Batch_9-LPID_1-Batch_9-Batch_9-PID_72_7500.wav
working on conv-self-LPID_2-Batch_9-LPID_3-Batch_9-Batch_9-PID_72_1651498529238.wav
working on conv-self-LPID_2-Batch_9-LPID_4-Batch_9-Batch_9-PID_72_1651499072567.wav
working on conv-self-LPID_2-Batch_9-LPID_5-Batch_9-Batch_9-PID_72_NaN.wav
working on conv-self-LPID_2-Batch_9-LPID_6-Batch_9-Batch_9-PID_72_1651499677785.wav
working on conv-self-LPID_3-Batch_9-LPID_1-Batch_9-Batch_9-PID_68_1651499613654.wav
working on conv-self-LPID_3-Batch_9-LPID_4-Batch_9-Batch_9-PID_68_1651500232309.wav
working on conv-self-LPID_3-Batch_9-LPID_5-Batch_9-Batch_9-PID_68_1651499081666.wav
working on conv-self-LPID_3-Batch_9-LPID_6-Batch_9-Batch_9-PID_68_1651497811272.wav
working on conv-self-LPID_4-Batch_9-LPID_1-Batch_9-Batch_9-PID_70_1651497873135.wav
working on conv-self-LPID_4-Batch_9-LPID_2-Batch_9-Batch_9-PID_70_1651499072792.wav
working on conv-self-LPID_4-Batch_9-LPID_3-Batch_9-Batch_9-PID_70_1651500232284.wav
working on conv-self-LPID_4-Batch_9-LPID_5-Batch_9-Batch_9-PID_70_3825.wav
working on conv-self-LPID_4-Batch_9-LPID_6-Batch_9-Batch_9-PID_70_NaN.wav
working on conv-self-LPID_5-Batch_9-LPID_1-Batch_9-Batch_9-PID_67_1651498565717.wav
working on conv-self-LPID_5-Batch_9-LPID_2-Batch_9-Batch_9-PID_67_3150.wav
working on conv-self-LPID_5-Batch_9-LPID_3-Batch_9-Batch_9-PID_67_1651499081541.wav
working on conv-self-LPID_5-Batch_9-LPID_4-Batch_9-Batch_9-PID_67_NaN.wav
working on conv-self-LPID_5-Batch_9-LPID_6-Batch_9-Batch_9-PID_67_1651500275852.wav
working on conv-self-LPID_6-Batch_9-LPID_1-Batch_9-Batch_9-PID_69_1651499147110.wav
working on conv-self-LPID_6-Batch_9-LPID_2-Batch_9-Batch_9-PID_69_1651499678085.wav
working on conv-self-LPID_6-Batch_9-LPID_3-Batch_9-Batch_9-PID_69_1651497811247.wav
working on conv-self-LPID_6-Batch_9-LPID_4-Batch_9-Batch_9-PID_69_20550.wav

Now we will collect envelope min and max in order to min-max normalize within participant such that all values are between 0 and 1.

if os.path.exists(os.path.join(ACfolder_processed, 'env_norm_dict.pkl')):
    with open(os.path.join(ACfolder_processed, 'env_norm_dict.pkl'), 'rb') as f:
        env_norm_dict = pickle.load(f)

else:
    env_error = []
    env_norm_dict = {}

    # Loop over wav files
    for audiofile in wavtotrack:

        basename = os.path.basename(audiofile)
        participantid = basename.split("-")[7].split("_")[0] + "_" + basename.split("-")[7].split("_")[1]
        print(participantid)
        print('working on ' + basename)

        # get the envelope values
        df = pd.read_csv(os.path.join(ACfolder_processed, 'env_' + basename + '_nenorm.csv'))

        ampv = df['envelope'].values

        # calculate mean, sd, min and max
        mean_env = np.mean(ampv)
        sd_env = np.std(ampv)
        min_env = np.min(ampv)
        max_env = np.max(ampv)

        # store in dict — append per file
        if participantid not in env_norm_dict:
            env_norm_dict[participantid] = []

        env_norm_dict[participantid].append({
            'file': basename,          # good idea to keep track of which file it came from
            'mean': mean_env,
            'sd': sd_env,
            'min': min_env,
            'max': max_env
        })
        
        # save the dict
        with open(os.path.join(ACfolder_processed, 'env_norm_dict.pkl'), 'wb') as f:
            pickle.dump(env_norm_dict, f)

        #break
records = [
    {'participant_id': pid, **d}
    for pid, entries in env_norm_dict.items()
    for d in entries
]
df_norm = pd.DataFrame(records)

group_minmax = (
    df_norm
    .groupby('participant_id')
    .agg(group_min=('min', 'min'),
         group_max=('max', 'max'))
    .reset_index()
)

group_minmax.head(50)
participant_id group_min group_max
0 PID_100 -0.005330 0.322132
1 PID_28 -0.009595 0.327359
2 PID_29 -0.005851 0.185734
3 PID_30 -0.007207 0.368074
4 PID_32 -0.004013 0.215745
5 PID_33 -0.002335 0.124191
6 PID_42 -0.010536 0.492340
7 PID_43 -0.007857 0.348659
8 PID_44 -0.009332 0.343480
9 PID_46 -0.005262 0.207097
10 PID_47 -0.010176 0.317340
11 PID_49 -0.009398 0.361051
12 PID_51 -0.008223 0.241501
13 PID_54 -0.007578 0.294397
14 PID_55 -0.011551 0.416647
15 PID_56 -0.007469 0.228157
16 PID_57 -0.008357 0.349623
17 PID_58 -0.007182 0.344079
18 PID_59 -0.007979 0.365084
19 PID_60 -0.005228 0.281293
20 PID_61 -0.008774 0.345365
21 PID_62 -0.010518 0.454042
22 PID_65 -0.008055 0.295667
23 PID_67 -0.008786 0.458062
24 PID_68 -0.005950 0.313120
25 PID_69 -0.008556 0.432135
26 PID_70 -0.005562 0.335428
27 PID_71 -0.005738 0.279836
28 PID_72 -0.011149 0.452879
29 PID_75 -0.006480 0.254247
30 PID_78 -0.006580 0.356652
31 PID_79 -0.007864 0.326652
32 PID_80 -0.006968 0.309518
33 PID_82 -0.009056 0.352760

Now we normalize by min-max

envtotrack = glob.glob(os.path.join(ACfolder_processed, "env_*_nenorm.csv"))
sr = 500 # Adapt if necessary


# loop, normalize by min-max
for file in envtotrack:
    print('Normalizing ' + file)
    df = pd.read_csv(file)

    basename = os.path.basename(file)
    participantid = basename.split("-")[7].split("_")[0] + "_" + basename.split("-")[7].split("_")[1]

    # get the group min and max
    group_min = group_minmax[group_minmax["participant_id"] == participantid]['group_min'].values[0]
    group_max = group_minmax[group_minmax["participant_id"] == participantid]['group_max'].values[0]

    # normalize the envelope
    df['envelope_norm'] = (df['envelope'] - group_min) / (group_max - group_min)

    # perform also envelope change
    df['envelope_change'] = np.insert(np.diff(df['envelope']), 0, 0)
    # smooth
    df['envelope_change'] = butter_lowpass_filtfilt(np.abs(df['envelope_change']), 10, sr, order=2)
    # multiply by sr to get in units in s (not per frame)
    df['envelope_change'] = df['envelope_change'] * sr

    newname = basename.replace("nenorm", "norm")

    # save the normalized envelope
    df.to_csv(os.path.join(ACfolder_processed, newname), index=False)

    # plot both envelopes for checking
    plt.figure(figsize=(10, 5))
    plt.plot(df['time'], df['envelope'], label='Original Envelope')
    plt.plot(df['time'], df['envelope_norm'], label='Normalized Envelope')
    plt.title(f'Envelope Normalization Check for {basename}')
    plt.xlabel('Time (ms)')
    plt.ylabel('Amplitude')
    plt.legend()
    plt.show()
Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batch_10-PID_82_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_10-LPID_3-Batch_10-Batch_10-PID_82_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_10-LPID_4-Batch_10-Batch_10-PID_82_1651672469653.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_4-LPID_3-Batch_4-Batch_4-PID_32_1651052144031.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_4-LPID_4-Batch_4-Batch_4-PID_32_1651049619527.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_4-LPID_5-Batch_4-Batch_4-PID_32_1651050501058.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_4-LPID_6-Batch_4-Batch_4-PID_32_1651051136023.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_6-LPID_5-Batch_6-Batch_6-PID_42_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_6-LPID_6-Batch_6-Batch_6-PID_42_1651137244213.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_7-LPID_3-Batch_7-Batch_7-PID_55_1651158248671.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_7-LPID_5-Batch_7-Batch_7-PID_55_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_7-LPID_6-Batch_7-Batch_7-PID_55_1651157435596.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_8-LPID_2-Batch_8-Batch_8-PID_58_1651242872751.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_8-LPID_3-Batch_8-Batch_8-PID_58_1651242342774.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_8-LPID_4-Batch_8-Batch_8-PID_58_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_8-LPID_5-Batch_8-Batch_8-PID_58_1651240942058.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_9-LPID_2-Batch_9-Batch_9-PID_71_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_9-LPID_4-Batch_9-Batch_9-PID_71_1651497873460.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_9-LPID_5-Batch_9-Batch_9-PID_71_1651498566567.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_1-Batch_9-LPID_6-Batch_9-Batch_9-PID_71_1651499147485.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_10-LPID_1-Batch_10-Batch_10-PID_78_3075.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_10-LPID_4-Batch_10-Batch_10-PID_78_1651674748055.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_10-LPID_6-Batch_10-Batch_10-PID_78_2850.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_6-LPID_3-Batch_6-Batch_6-PID_43_1651136342847.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_6-LPID_4-Batch_6-Batch_6-PID_43_1651137315981.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_6-LPID_5-Batch_6-Batch_6-PID_43_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_6-LPID_6-Batch_6-Batch_6-PID_43_3650.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_7-LPID_5-Batch_7-Batch_7-PID_51_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_8-LPID_1-Batch_8-Batch_8-PID_62_1651242872476.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_8-LPID_3-Batch_8-Batch_8-PID_62_1651240855561.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_8-LPID_4-Batch_8-Batch_8-PID_62_1651241608347.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_8-LPID_6-Batch_8-Batch_8-PID_62_1651242212432.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_9-LPID_1-Batch_9-Batch_9-PID_72_7500.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_9-LPID_3-Batch_9-Batch_9-PID_72_1651498529238.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_9-LPID_4-Batch_9-Batch_9-PID_72_1651499072567.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_9-LPID_5-Batch_9-Batch_9-PID_72_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_2-Batch_9-LPID_6-Batch_9-Batch_9-PID_72_1651499677785.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_10-LPID_1-Batch_10-Batch_10-PID_80_8100.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_10-LPID_2-Batch_10-Batch_10-PID_80_15475.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_10-LPID_4-Batch_10-Batch_10-PID_80_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_10-LPID_6-Batch_10-Batch_10-PID_80_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_4-LPID_1-Batch_4-Batch_4-PID_30_1651052144631.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_4-LPID_4-Batch_4-Batch_4-PID_30_1651052811470.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_4-LPID_5-Batch_4-Batch_4-PID_30_1651051092724.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_4-LPID_6-Batch_4-Batch_4-PID_30_1651049613133.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_6-LPID_2-Batch_6-Batch_6-PID_46_1651136342797.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_6-LPID_4-Batch_6-Batch_6-PID_46_1651138760460.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_6-LPID_5-Batch_6-Batch_6-PID_46_1651137231817.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_6-LPID_6-Batch_6-Batch_6-PID_46_1651135243380.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_7-LPID_1-Batch_7-Batch_7-PID_54_1651158248821.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_7-LPID_5-Batch_7-Batch_7-PID_54_37175.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_7-LPID_6-Batch_7-Batch_7-PID_54_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_8-LPID_1-Batch_8-Batch_8-PID_61_1651242342699.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_8-LPID_2-Batch_8-Batch_8-PID_61_1651240855686.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_8-LPID_4-Batch_8-Batch_8-PID_61_1651242860140.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_8-LPID_5-Batch_8-Batch_8-PID_61_3300.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_8-LPID_6-Batch_8-Batch_8-PID_61_1651239870949.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_9-LPID_1-Batch_9-Batch_9-PID_68_1651499613654.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_9-LPID_4-Batch_9-Batch_9-PID_68_1651500232309.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_9-LPID_5-Batch_9-Batch_9-PID_68_1651499081666.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_3-Batch_9-LPID_6-Batch_9-Batch_9-PID_68_1651497811272.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_10-LPID_1-Batch_10-Batch_10-PID_75_1651672469553.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_10-LPID_2-Batch_10-Batch_10-PID_75_1651674747930.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_10-LPID_3-Batch_10-Batch_10-PID_75_10025.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_10-LPID_6-Batch_10-Batch_10-PID_75_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_4-LPID_3-Batch_4-Batch_4-PID_28_1651052810920.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_4-LPID_5-Batch_4-Batch_4-PID_28_1651052129159.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_4-LPID_6-Batch_4-Batch_4-PID_28_1651050428177.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_6-LPID_2-Batch_6-Batch_6-PID_47_1651137316181.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_6-LPID_3-Batch_6-Batch_6-PID_47_1651138803785.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_6-LPID_5-Batch_6-Batch_6-PID_47_2425.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_7-LPID_6-Batch_7-Batch_7-PID_56_1651156229273.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_8-LPID_1-Batch_8-Batch_8-PID_59_7350.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_8-LPID_2-Batch_8-Batch_8-PID_59_1651241608397.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_8-LPID_3-Batch_8-Batch_8-PID_59_1651242860115.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_8-LPID_5-Batch_8-Batch_8-PID_59_1651242227123.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_8-LPID_6-Batch_8-Batch_8-PID_59_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_9-LPID_1-Batch_9-Batch_9-PID_70_1651497873135.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_9-LPID_2-Batch_9-Batch_9-PID_70_1651499072792.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_9-LPID_3-Batch_9-Batch_9-PID_70_1651500232284.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_9-LPID_5-Batch_9-Batch_9-PID_70_3825.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_4-Batch_9-LPID_6-Batch_9-Batch_9-PID_70_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_4-LPID_4-Batch_4-Batch_4-PID_29_1651052129009.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_4-LPID_6-Batch_4-Batch_4-PID_29_1651052831526.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_6-LPID_1-Batch_6-Batch_6-PID_44_8550.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_6-LPID_2-Batch_6-Batch_6-PID_44_5725.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_6-LPID_3-Batch_6-Batch_6-PID_44_1651137231867.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_6-LPID_4-Batch_6-Batch_6-PID_44_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_7-LPID_1-Batch_7-Batch_7-PID_100_86475.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_7-LPID_2-Batch_7-Batch_7-PID_100_36725.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_7-LPID_3-Batch_7-Batch_7-PID_100_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_8-LPID_1-Batch_8-Batch_8-PID_60_1651240943158.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_8-LPID_2-Batch_8-Batch_8-PID_60_1651239812821.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_8-LPID_3-Batch_8-Batch_8-PID_60_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_8-LPID_4-Batch_8-Batch_8-PID_60_1651242227923.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_8-LPID_6-Batch_8-Batch_8-PID_60_1651242858056.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_9-LPID_1-Batch_9-Batch_9-PID_67_1651498565717.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_9-LPID_2-Batch_9-Batch_9-PID_67_3150.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_9-LPID_3-Batch_9-Batch_9-PID_67_1651499081541.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_9-LPID_4-Batch_9-Batch_9-PID_67_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_5-Batch_9-LPID_6-Batch_9-Batch_9-PID_67_1651500275852.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_10-LPID_2-Batch_10-Batch_10-PID_79_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_10-LPID_3-Batch_10-Batch_10-PID_79_13625.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_10-LPID_4-Batch_10-Batch_10-PID_79_3775.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_4-LPID_1-Batch_4-Batch_4-PID_33_1651051135973.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_4-LPID_3-Batch_4-Batch_4-PID_33_1651049611558.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_4-LPID_4-Batch_4-Batch_4-PID_33_1651050428027.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_4-LPID_5-Batch_4-Batch_4-PID_33_1651052831501.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_6-LPID_1-Batch_6-Batch_6-PID_49_1651137244138.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_6-LPID_2-Batch_6-Batch_6-PID_49_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_6-LPID_3-Batch_6-Batch_6-PID_49_1651135243405.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_6-LPID_4-Batch_6-Batch_6-PID_49_1651136381872.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_6-LPID_5-Batch_6-Batch_6-PID_49_1651138689759.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_7-LPID_1-Batch_7-Batch_7-PID_57_1651157435821.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_7-LPID_3-Batch_7-Batch_7-PID_57_5725.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_7-LPID_4-Batch_7-Batch_7-PID_57_1651156230673.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_7-LPID_5-Batch_7-Batch_7-PID_57_NaN.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_8-LPID_1-Batch_8-Batch_8-PID_65_59825.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_8-LPID_2-Batch_8-Batch_8-PID_65_1651242212682.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_8-LPID_3-Batch_8-Batch_8-PID_65_1651239870999.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_8-LPID_4-Batch_8-Batch_8-PID_65_6925.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_8-LPID_5-Batch_8-Batch_8-PID_65_1651242857331.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_9-LPID_1-Batch_9-Batch_9-PID_69_1651499147110.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_9-LPID_2-Batch_9-Batch_9-PID_69_1651499678085.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_9-LPID_3-Batch_9-Batch_9-PID_69_1651497811247.wav_nenorm.csv

Normalizing c:\Users\kadava\Documents\Github\TilburgMultiscaleSummerschool2026\Datasets\PARSEL\scripts\continuousacoustics\..\..\TS_acoustics\env_conv-self-LPID_6-Batch_9-LPID_4-Batch_9-Batch_9-PID_69_20550.wav_nenorm.csv

This is an example of a file

time audio envelope filename envelope_norm envelope_change
0 0.0 0.000000 0.000007 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025051 -0.000012
1 2.0 0.000000 0.000008 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025053 0.000014
2 4.0 0.000000 0.000009 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025055 0.000039
3 6.0 0.000000 0.000010 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025058 0.000063
4 8.0 0.000031 0.000011 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025060 0.000085
5 10.0 0.000031 0.000012 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025062 0.000105
6 12.0 0.000031 0.000012 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025064 0.000122
7 14.0 0.000000 0.000013 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025066 0.000138
8 16.0 0.000061 0.000014 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025068 0.000151
9 18.0 0.000000 0.000014 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025070 0.000161
10 20.0 0.000031 0.000015 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025072 0.000170
11 22.0 0.000000 0.000016 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025073 0.000176
12 24.0 0.000000 0.000016 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025074 0.000180
13 26.0 -0.000031 0.000016 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025075 0.000183
14 28.0 0.000061 0.000017 conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc... 0.025077 0.000183


Here it is visualized

Extracting fundamental frequency (f0)

Now we extract pitch using the parselmouth library [@jadoul_etal18].

Code with function to extract the fundamental frequency
def extract_f0(locationsound):  # Extract fundamental frequency from audio file
    """
    Extracts the fundamental frequency (F0) from an audio file.

    Parameters:
    - locationsound (str): Path to the audio file
    - sex (str): 'vrouw' for female, other for male (determines F0 range)

    Returns:
    - tuple: (Sound object, numpy array of F0 values)
    """

    # read the sound file as numpy array
    audio, sr = librosa.load(locationsound, sr=48000)

    # read the sound file into Python
    snd = parselmouth.Sound(audio, sampling_frequency=sr)

    f0min = 80
    f0max = 335 # based on the Balance paper
    # Note that we could also set different min-max for female & male, given that we are not,
    # it is recommended (if not necessary) to have speaker-specific intercept in modelling
    
    pitch = snd.to_pitch(time_step = 0.002, pitch_floor=f0min, pitch_ceiling=f0max) # time_step to get 500Hz

    f0_values = pitch.selected_array['frequency']

    return snd, f0_values

Now we loop over all audio files and extract f0 from each. Resulting f0 contours were smoothed with a Savitzky-Golay 3rd-polynomial filter with a span of 50 ms [following @fuchsetal2016] applied to continuous runs of phonated vocalization to maintain discontinuities typical of the f0 signal.

freq=48000    

f0_error = []

# Loop over wav files
for audiofile in wavtotrack:

    basename = os.path.basename(audiofile)

    print('working on ' + basename)

    # apply the function
    snd, f0 = extract_f0(audiofile)

    length = len(f0)

    # replace 0 values with NaN
    f0 = np.where(f0 == 0, np.nan, f0)

    # create time vector
    F0_time = np.linspace(0, snd.duration, len(f0)) * 1000  # Generate time vector

    # create df
    f0_df = pd.DataFrame({'time_ms': F0_time, 'f0': f0, 'ID': basename})

    # Smooth the f0 values
    try:
        f0_df = chunk_and_smooth(f0_df, 'f0') # do it with window 25
    except ValueError:
        try:
            # unless there is only tiny chunk of f0 and then we need window of 5
            print('ValueError: ' + basename + ', f0 trace is smaller than window length, resuming to window=5')
            f0_df = chunk_and_smooth(f0_df, 'f0', window=5)
        except ValueError:
            print('ValueError: ' + basename + ', even with window=5, skipping f0 extraction')
            f0_error.append(basename)
            continue

    # write as csv
    f0_df.to_csv(os.path.join(ACfolder_processed, 'f0_' + basename + '.csv'), index=False)
working on conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batch_10-PID_82_NaN.wav
ValueError: conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batch_10-PID_82_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_10-LPID_3-Batch_10-Batch_10-PID_82_NaN.wav
ValueError: conv-self-LPID_1-Batch_10-LPID_3-Batch_10-Batch_10-PID_82_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_10-LPID_4-Batch_10-Batch_10-PID_82_1651672469653.wav
ValueError: conv-self-LPID_1-Batch_10-LPID_4-Batch_10-Batch_10-PID_82_1651672469653.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_10-LPID_1-Batch_10-Batch_10-PID_78_3075.wav
ValueError: conv-self-LPID_2-Batch_10-LPID_1-Batch_10-Batch_10-PID_78_3075.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_10-LPID_4-Batch_10-Batch_10-PID_78_1651674748055.wav
ValueError: conv-self-LPID_2-Batch_10-LPID_4-Batch_10-Batch_10-PID_78_1651674748055.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_10-LPID_6-Batch_10-Batch_10-PID_78_2850.wav
ValueError: conv-self-LPID_2-Batch_10-LPID_6-Batch_10-Batch_10-PID_78_2850.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_10-LPID_1-Batch_10-Batch_10-PID_80_8100.wav
ValueError: conv-self-LPID_3-Batch_10-LPID_1-Batch_10-Batch_10-PID_80_8100.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_10-LPID_2-Batch_10-Batch_10-PID_80_15475.wav
ValueError: conv-self-LPID_3-Batch_10-LPID_2-Batch_10-Batch_10-PID_80_15475.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_10-LPID_4-Batch_10-Batch_10-PID_80_NaN.wav
ValueError: conv-self-LPID_3-Batch_10-LPID_4-Batch_10-Batch_10-PID_80_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_10-LPID_6-Batch_10-Batch_10-PID_80_NaN.wav
ValueError: conv-self-LPID_3-Batch_10-LPID_6-Batch_10-Batch_10-PID_80_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_10-LPID_1-Batch_10-Batch_10-PID_75_1651672469553.wav
ValueError: conv-self-LPID_4-Batch_10-LPID_1-Batch_10-Batch_10-PID_75_1651672469553.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_10-LPID_2-Batch_10-Batch_10-PID_75_1651674747930.wav
ValueError: conv-self-LPID_4-Batch_10-LPID_2-Batch_10-Batch_10-PID_75_1651674747930.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_10-LPID_3-Batch_10-Batch_10-PID_75_10025.wav
ValueError: conv-self-LPID_4-Batch_10-LPID_3-Batch_10-Batch_10-PID_75_10025.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_10-LPID_6-Batch_10-Batch_10-PID_75_NaN.wav
ValueError: conv-self-LPID_4-Batch_10-LPID_6-Batch_10-Batch_10-PID_75_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_10-LPID_2-Batch_10-Batch_10-PID_79_NaN.wav
ValueError: conv-self-LPID_6-Batch_10-LPID_2-Batch_10-Batch_10-PID_79_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_10-LPID_3-Batch_10-Batch_10-PID_79_13625.wav
ValueError: conv-self-LPID_6-Batch_10-LPID_3-Batch_10-Batch_10-PID_79_13625.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_10-LPID_4-Batch_10-Batch_10-PID_79_3775.wav
ValueError: conv-self-LPID_6-Batch_10-LPID_4-Batch_10-Batch_10-PID_79_3775.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_4-LPID_3-Batch_4-Batch_4-PID_32_1651052144031.wav
ValueError: conv-self-LPID_1-Batch_4-LPID_3-Batch_4-Batch_4-PID_32_1651052144031.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_4-LPID_4-Batch_4-Batch_4-PID_32_1651049619527.wav
ValueError: conv-self-LPID_1-Batch_4-LPID_4-Batch_4-Batch_4-PID_32_1651049619527.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_4-LPID_5-Batch_4-Batch_4-PID_32_1651050501058.wav
ValueError: conv-self-LPID_1-Batch_4-LPID_5-Batch_4-Batch_4-PID_32_1651050501058.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_4-LPID_6-Batch_4-Batch_4-PID_32_1651051136023.wav
ValueError: conv-self-LPID_1-Batch_4-LPID_6-Batch_4-Batch_4-PID_32_1651051136023.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_4-LPID_1-Batch_4-Batch_4-PID_30_1651052144631.wav
ValueError: conv-self-LPID_3-Batch_4-LPID_1-Batch_4-Batch_4-PID_30_1651052144631.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_4-LPID_4-Batch_4-Batch_4-PID_30_1651052811470.wav
ValueError: conv-self-LPID_3-Batch_4-LPID_4-Batch_4-Batch_4-PID_30_1651052811470.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_4-LPID_5-Batch_4-Batch_4-PID_30_1651051092724.wav
ValueError: conv-self-LPID_3-Batch_4-LPID_5-Batch_4-Batch_4-PID_30_1651051092724.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_4-LPID_6-Batch_4-Batch_4-PID_30_1651049613133.wav
ValueError: conv-self-LPID_3-Batch_4-LPID_6-Batch_4-Batch_4-PID_30_1651049613133.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_4-LPID_3-Batch_4-Batch_4-PID_28_1651052810920.wav
ValueError: conv-self-LPID_4-Batch_4-LPID_3-Batch_4-Batch_4-PID_28_1651052810920.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_4-LPID_5-Batch_4-Batch_4-PID_28_1651052129159.wav
ValueError: conv-self-LPID_4-Batch_4-LPID_5-Batch_4-Batch_4-PID_28_1651052129159.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_4-LPID_6-Batch_4-Batch_4-PID_28_1651050428177.wav
ValueError: conv-self-LPID_4-Batch_4-LPID_6-Batch_4-Batch_4-PID_28_1651050428177.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_4-LPID_4-Batch_4-Batch_4-PID_29_1651052129009.wav
ValueError: conv-self-LPID_5-Batch_4-LPID_4-Batch_4-Batch_4-PID_29_1651052129009.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_4-LPID_6-Batch_4-Batch_4-PID_29_1651052831526.wav
ValueError: conv-self-LPID_5-Batch_4-LPID_6-Batch_4-Batch_4-PID_29_1651052831526.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_4-LPID_1-Batch_4-Batch_4-PID_33_1651051135973.wav
ValueError: conv-self-LPID_6-Batch_4-LPID_1-Batch_4-Batch_4-PID_33_1651051135973.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_4-LPID_3-Batch_4-Batch_4-PID_33_1651049611558.wav
ValueError: conv-self-LPID_6-Batch_4-LPID_3-Batch_4-Batch_4-PID_33_1651049611558.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_4-LPID_4-Batch_4-Batch_4-PID_33_1651050428027.wav
ValueError: conv-self-LPID_6-Batch_4-LPID_4-Batch_4-Batch_4-PID_33_1651050428027.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_4-LPID_5-Batch_4-Batch_4-PID_33_1651052831501.wav
ValueError: conv-self-LPID_6-Batch_4-LPID_5-Batch_4-Batch_4-PID_33_1651052831501.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_6-LPID_5-Batch_6-Batch_6-PID_42_NaN.wav
ValueError: conv-self-LPID_1-Batch_6-LPID_5-Batch_6-Batch_6-PID_42_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_6-LPID_6-Batch_6-Batch_6-PID_42_1651137244213.wav
ValueError: conv-self-LPID_1-Batch_6-LPID_6-Batch_6-Batch_6-PID_42_1651137244213.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_6-LPID_3-Batch_6-Batch_6-PID_43_1651136342847.wav
ValueError: conv-self-LPID_2-Batch_6-LPID_3-Batch_6-Batch_6-PID_43_1651136342847.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_6-LPID_4-Batch_6-Batch_6-PID_43_1651137315981.wav
ValueError: conv-self-LPID_2-Batch_6-LPID_4-Batch_6-Batch_6-PID_43_1651137315981.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_6-LPID_5-Batch_6-Batch_6-PID_43_NaN.wav
ValueError: conv-self-LPID_2-Batch_6-LPID_5-Batch_6-Batch_6-PID_43_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_6-LPID_6-Batch_6-Batch_6-PID_43_3650.wav
ValueError: conv-self-LPID_2-Batch_6-LPID_6-Batch_6-Batch_6-PID_43_3650.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_6-LPID_2-Batch_6-Batch_6-PID_46_1651136342797.wav
ValueError: conv-self-LPID_3-Batch_6-LPID_2-Batch_6-Batch_6-PID_46_1651136342797.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_6-LPID_4-Batch_6-Batch_6-PID_46_1651138760460.wav
ValueError: conv-self-LPID_3-Batch_6-LPID_4-Batch_6-Batch_6-PID_46_1651138760460.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_6-LPID_5-Batch_6-Batch_6-PID_46_1651137231817.wav
ValueError: conv-self-LPID_3-Batch_6-LPID_5-Batch_6-Batch_6-PID_46_1651137231817.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_6-LPID_6-Batch_6-Batch_6-PID_46_1651135243380.wav
ValueError: conv-self-LPID_3-Batch_6-LPID_6-Batch_6-Batch_6-PID_46_1651135243380.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_6-LPID_2-Batch_6-Batch_6-PID_47_1651137316181.wav
ValueError: conv-self-LPID_4-Batch_6-LPID_2-Batch_6-Batch_6-PID_47_1651137316181.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_6-LPID_3-Batch_6-Batch_6-PID_47_1651138803785.wav
ValueError: conv-self-LPID_4-Batch_6-LPID_3-Batch_6-Batch_6-PID_47_1651138803785.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_6-LPID_5-Batch_6-Batch_6-PID_47_2425.wav
ValueError: conv-self-LPID_4-Batch_6-LPID_5-Batch_6-Batch_6-PID_47_2425.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_6-LPID_1-Batch_6-Batch_6-PID_44_8550.wav
ValueError: conv-self-LPID_5-Batch_6-LPID_1-Batch_6-Batch_6-PID_44_8550.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_6-LPID_2-Batch_6-Batch_6-PID_44_5725.wav
ValueError: conv-self-LPID_5-Batch_6-LPID_2-Batch_6-Batch_6-PID_44_5725.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_6-LPID_3-Batch_6-Batch_6-PID_44_1651137231867.wav
ValueError: conv-self-LPID_5-Batch_6-LPID_3-Batch_6-Batch_6-PID_44_1651137231867.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_6-LPID_4-Batch_6-Batch_6-PID_44_NaN.wav
ValueError: conv-self-LPID_5-Batch_6-LPID_4-Batch_6-Batch_6-PID_44_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_6-LPID_1-Batch_6-Batch_6-PID_49_1651137244138.wav
ValueError: conv-self-LPID_6-Batch_6-LPID_1-Batch_6-Batch_6-PID_49_1651137244138.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_6-LPID_2-Batch_6-Batch_6-PID_49_NaN.wav
ValueError: conv-self-LPID_6-Batch_6-LPID_2-Batch_6-Batch_6-PID_49_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_6-LPID_3-Batch_6-Batch_6-PID_49_1651135243405.wav
ValueError: conv-self-LPID_6-Batch_6-LPID_3-Batch_6-Batch_6-PID_49_1651135243405.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_6-LPID_4-Batch_6-Batch_6-PID_49_1651136381872.wav
ValueError: conv-self-LPID_6-Batch_6-LPID_4-Batch_6-Batch_6-PID_49_1651136381872.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_6-LPID_5-Batch_6-Batch_6-PID_49_1651138689759.wav
ValueError: conv-self-LPID_6-Batch_6-LPID_5-Batch_6-Batch_6-PID_49_1651138689759.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_7-LPID_3-Batch_7-Batch_7-PID_55_1651158248671.wav
ValueError: conv-self-LPID_1-Batch_7-LPID_3-Batch_7-Batch_7-PID_55_1651158248671.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_7-LPID_5-Batch_7-Batch_7-PID_55_NaN.wav
ValueError: conv-self-LPID_1-Batch_7-LPID_5-Batch_7-Batch_7-PID_55_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_7-LPID_6-Batch_7-Batch_7-PID_55_1651157435596.wav
ValueError: conv-self-LPID_1-Batch_7-LPID_6-Batch_7-Batch_7-PID_55_1651157435596.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_7-LPID_5-Batch_7-Batch_7-PID_51_NaN.wav
ValueError: conv-self-LPID_2-Batch_7-LPID_5-Batch_7-Batch_7-PID_51_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_7-LPID_1-Batch_7-Batch_7-PID_54_1651158248821.wav
ValueError: conv-self-LPID_3-Batch_7-LPID_1-Batch_7-Batch_7-PID_54_1651158248821.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_7-LPID_5-Batch_7-Batch_7-PID_54_37175.wav
ValueError: conv-self-LPID_3-Batch_7-LPID_5-Batch_7-Batch_7-PID_54_37175.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_7-LPID_6-Batch_7-Batch_7-PID_54_NaN.wav
ValueError: conv-self-LPID_3-Batch_7-LPID_6-Batch_7-Batch_7-PID_54_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_7-LPID_6-Batch_7-Batch_7-PID_56_1651156229273.wav
ValueError: conv-self-LPID_4-Batch_7-LPID_6-Batch_7-Batch_7-PID_56_1651156229273.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_7-LPID_1-Batch_7-Batch_7-PID_100_86475.wav
ValueError: conv-self-LPID_5-Batch_7-LPID_1-Batch_7-Batch_7-PID_100_86475.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_7-LPID_2-Batch_7-Batch_7-PID_100_36725.wav
ValueError: conv-self-LPID_5-Batch_7-LPID_2-Batch_7-Batch_7-PID_100_36725.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_7-LPID_3-Batch_7-Batch_7-PID_100_NaN.wav
ValueError: conv-self-LPID_5-Batch_7-LPID_3-Batch_7-Batch_7-PID_100_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_7-LPID_1-Batch_7-Batch_7-PID_57_1651157435821.wav
ValueError: conv-self-LPID_6-Batch_7-LPID_1-Batch_7-Batch_7-PID_57_1651157435821.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_7-LPID_3-Batch_7-Batch_7-PID_57_5725.wav
ValueError: conv-self-LPID_6-Batch_7-LPID_3-Batch_7-Batch_7-PID_57_5725.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_7-LPID_4-Batch_7-Batch_7-PID_57_1651156230673.wav
ValueError: conv-self-LPID_6-Batch_7-LPID_4-Batch_7-Batch_7-PID_57_1651156230673.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_7-LPID_5-Batch_7-Batch_7-PID_57_NaN.wav
ValueError: conv-self-LPID_6-Batch_7-LPID_5-Batch_7-Batch_7-PID_57_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_8-LPID_2-Batch_8-Batch_8-PID_58_1651242872751.wav
ValueError: conv-self-LPID_1-Batch_8-LPID_2-Batch_8-Batch_8-PID_58_1651242872751.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_8-LPID_3-Batch_8-Batch_8-PID_58_1651242342774.wav
ValueError: conv-self-LPID_1-Batch_8-LPID_3-Batch_8-Batch_8-PID_58_1651242342774.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_8-LPID_4-Batch_8-Batch_8-PID_58_NaN.wav
ValueError: conv-self-LPID_1-Batch_8-LPID_4-Batch_8-Batch_8-PID_58_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_8-LPID_5-Batch_8-Batch_8-PID_58_1651240942058.wav
ValueError: conv-self-LPID_1-Batch_8-LPID_5-Batch_8-Batch_8-PID_58_1651240942058.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_8-LPID_1-Batch_8-Batch_8-PID_62_1651242872476.wav
ValueError: conv-self-LPID_2-Batch_8-LPID_1-Batch_8-Batch_8-PID_62_1651242872476.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_8-LPID_3-Batch_8-Batch_8-PID_62_1651240855561.wav
ValueError: conv-self-LPID_2-Batch_8-LPID_3-Batch_8-Batch_8-PID_62_1651240855561.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_8-LPID_4-Batch_8-Batch_8-PID_62_1651241608347.wav
ValueError: conv-self-LPID_2-Batch_8-LPID_4-Batch_8-Batch_8-PID_62_1651241608347.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_8-LPID_6-Batch_8-Batch_8-PID_62_1651242212432.wav
ValueError: conv-self-LPID_2-Batch_8-LPID_6-Batch_8-Batch_8-PID_62_1651242212432.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_8-LPID_1-Batch_8-Batch_8-PID_61_1651242342699.wav
ValueError: conv-self-LPID_3-Batch_8-LPID_1-Batch_8-Batch_8-PID_61_1651242342699.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_8-LPID_2-Batch_8-Batch_8-PID_61_1651240855686.wav
ValueError: conv-self-LPID_3-Batch_8-LPID_2-Batch_8-Batch_8-PID_61_1651240855686.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_8-LPID_4-Batch_8-Batch_8-PID_61_1651242860140.wav
ValueError: conv-self-LPID_3-Batch_8-LPID_4-Batch_8-Batch_8-PID_61_1651242860140.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_8-LPID_5-Batch_8-Batch_8-PID_61_3300.wav
ValueError: conv-self-LPID_3-Batch_8-LPID_5-Batch_8-Batch_8-PID_61_3300.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_8-LPID_6-Batch_8-Batch_8-PID_61_1651239870949.wav
ValueError: conv-self-LPID_3-Batch_8-LPID_6-Batch_8-Batch_8-PID_61_1651239870949.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_8-LPID_1-Batch_8-Batch_8-PID_59_7350.wav
ValueError: conv-self-LPID_4-Batch_8-LPID_1-Batch_8-Batch_8-PID_59_7350.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_8-LPID_2-Batch_8-Batch_8-PID_59_1651241608397.wav
ValueError: conv-self-LPID_4-Batch_8-LPID_2-Batch_8-Batch_8-PID_59_1651241608397.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_8-LPID_3-Batch_8-Batch_8-PID_59_1651242860115.wav
ValueError: conv-self-LPID_4-Batch_8-LPID_3-Batch_8-Batch_8-PID_59_1651242860115.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_8-LPID_5-Batch_8-Batch_8-PID_59_1651242227123.wav
ValueError: conv-self-LPID_4-Batch_8-LPID_5-Batch_8-Batch_8-PID_59_1651242227123.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_8-LPID_6-Batch_8-Batch_8-PID_59_NaN.wav
ValueError: conv-self-LPID_4-Batch_8-LPID_6-Batch_8-Batch_8-PID_59_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_8-LPID_1-Batch_8-Batch_8-PID_60_1651240943158.wav
ValueError: conv-self-LPID_5-Batch_8-LPID_1-Batch_8-Batch_8-PID_60_1651240943158.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_8-LPID_2-Batch_8-Batch_8-PID_60_1651239812821.wav
ValueError: conv-self-LPID_5-Batch_8-LPID_2-Batch_8-Batch_8-PID_60_1651239812821.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_8-LPID_3-Batch_8-Batch_8-PID_60_NaN.wav
ValueError: conv-self-LPID_5-Batch_8-LPID_3-Batch_8-Batch_8-PID_60_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_8-LPID_4-Batch_8-Batch_8-PID_60_1651242227923.wav
ValueError: conv-self-LPID_5-Batch_8-LPID_4-Batch_8-Batch_8-PID_60_1651242227923.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_8-LPID_6-Batch_8-Batch_8-PID_60_1651242858056.wav
ValueError: conv-self-LPID_5-Batch_8-LPID_6-Batch_8-Batch_8-PID_60_1651242858056.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_8-LPID_1-Batch_8-Batch_8-PID_65_59825.wav
ValueError: conv-self-LPID_6-Batch_8-LPID_1-Batch_8-Batch_8-PID_65_59825.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_8-LPID_2-Batch_8-Batch_8-PID_65_1651242212682.wav
ValueError: conv-self-LPID_6-Batch_8-LPID_2-Batch_8-Batch_8-PID_65_1651242212682.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_8-LPID_3-Batch_8-Batch_8-PID_65_1651239870999.wav
ValueError: conv-self-LPID_6-Batch_8-LPID_3-Batch_8-Batch_8-PID_65_1651239870999.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_8-LPID_4-Batch_8-Batch_8-PID_65_6925.wav
ValueError: conv-self-LPID_6-Batch_8-LPID_4-Batch_8-Batch_8-PID_65_6925.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_8-LPID_5-Batch_8-Batch_8-PID_65_1651242857331.wav
ValueError: conv-self-LPID_6-Batch_8-LPID_5-Batch_8-Batch_8-PID_65_1651242857331.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_9-LPID_2-Batch_9-Batch_9-PID_71_NaN.wav
ValueError: conv-self-LPID_1-Batch_9-LPID_2-Batch_9-Batch_9-PID_71_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_9-LPID_4-Batch_9-Batch_9-PID_71_1651497873460.wav
ValueError: conv-self-LPID_1-Batch_9-LPID_4-Batch_9-Batch_9-PID_71_1651497873460.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_9-LPID_5-Batch_9-Batch_9-PID_71_1651498566567.wav
ValueError: conv-self-LPID_1-Batch_9-LPID_5-Batch_9-Batch_9-PID_71_1651498566567.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_1-Batch_9-LPID_6-Batch_9-Batch_9-PID_71_1651499147485.wav
ValueError: conv-self-LPID_1-Batch_9-LPID_6-Batch_9-Batch_9-PID_71_1651499147485.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_9-LPID_1-Batch_9-Batch_9-PID_72_7500.wav
ValueError: conv-self-LPID_2-Batch_9-LPID_1-Batch_9-Batch_9-PID_72_7500.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_9-LPID_3-Batch_9-Batch_9-PID_72_1651498529238.wav
ValueError: conv-self-LPID_2-Batch_9-LPID_3-Batch_9-Batch_9-PID_72_1651498529238.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_9-LPID_4-Batch_9-Batch_9-PID_72_1651499072567.wav
ValueError: conv-self-LPID_2-Batch_9-LPID_4-Batch_9-Batch_9-PID_72_1651499072567.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_9-LPID_5-Batch_9-Batch_9-PID_72_NaN.wav
ValueError: conv-self-LPID_2-Batch_9-LPID_5-Batch_9-Batch_9-PID_72_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_2-Batch_9-LPID_6-Batch_9-Batch_9-PID_72_1651499677785.wav
ValueError: conv-self-LPID_2-Batch_9-LPID_6-Batch_9-Batch_9-PID_72_1651499677785.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_9-LPID_1-Batch_9-Batch_9-PID_68_1651499613654.wav
ValueError: conv-self-LPID_3-Batch_9-LPID_1-Batch_9-Batch_9-PID_68_1651499613654.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_9-LPID_4-Batch_9-Batch_9-PID_68_1651500232309.wav
ValueError: conv-self-LPID_3-Batch_9-LPID_4-Batch_9-Batch_9-PID_68_1651500232309.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_9-LPID_5-Batch_9-Batch_9-PID_68_1651499081666.wav
ValueError: conv-self-LPID_3-Batch_9-LPID_5-Batch_9-Batch_9-PID_68_1651499081666.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_3-Batch_9-LPID_6-Batch_9-Batch_9-PID_68_1651497811272.wav
ValueError: conv-self-LPID_3-Batch_9-LPID_6-Batch_9-Batch_9-PID_68_1651497811272.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_9-LPID_1-Batch_9-Batch_9-PID_70_1651497873135.wav
ValueError: conv-self-LPID_4-Batch_9-LPID_1-Batch_9-Batch_9-PID_70_1651497873135.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_9-LPID_2-Batch_9-Batch_9-PID_70_1651499072792.wav
ValueError: conv-self-LPID_4-Batch_9-LPID_2-Batch_9-Batch_9-PID_70_1651499072792.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_9-LPID_3-Batch_9-Batch_9-PID_70_1651500232284.wav
ValueError: conv-self-LPID_4-Batch_9-LPID_3-Batch_9-Batch_9-PID_70_1651500232284.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_9-LPID_5-Batch_9-Batch_9-PID_70_3825.wav
ValueError: conv-self-LPID_4-Batch_9-LPID_5-Batch_9-Batch_9-PID_70_3825.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_4-Batch_9-LPID_6-Batch_9-Batch_9-PID_70_NaN.wav
ValueError: conv-self-LPID_4-Batch_9-LPID_6-Batch_9-Batch_9-PID_70_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_9-LPID_1-Batch_9-Batch_9-PID_67_1651498565717.wav
ValueError: conv-self-LPID_5-Batch_9-LPID_1-Batch_9-Batch_9-PID_67_1651498565717.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_9-LPID_2-Batch_9-Batch_9-PID_67_3150.wav
ValueError: conv-self-LPID_5-Batch_9-LPID_2-Batch_9-Batch_9-PID_67_3150.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_9-LPID_3-Batch_9-Batch_9-PID_67_1651499081541.wav
ValueError: conv-self-LPID_5-Batch_9-LPID_3-Batch_9-Batch_9-PID_67_1651499081541.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_9-LPID_4-Batch_9-Batch_9-PID_67_NaN.wav
ValueError: conv-self-LPID_5-Batch_9-LPID_4-Batch_9-Batch_9-PID_67_NaN.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_5-Batch_9-LPID_6-Batch_9-Batch_9-PID_67_1651500275852.wav
ValueError: conv-self-LPID_5-Batch_9-LPID_6-Batch_9-Batch_9-PID_67_1651500275852.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_9-LPID_1-Batch_9-Batch_9-PID_69_1651499147110.wav
ValueError: conv-self-LPID_6-Batch_9-LPID_1-Batch_9-Batch_9-PID_69_1651499147110.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_9-LPID_2-Batch_9-Batch_9-PID_69_1651499678085.wav
ValueError: conv-self-LPID_6-Batch_9-LPID_2-Batch_9-Batch_9-PID_69_1651499678085.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_9-LPID_3-Batch_9-Batch_9-PID_69_1651497811247.wav
ValueError: conv-self-LPID_6-Batch_9-LPID_3-Batch_9-Batch_9-PID_69_1651497811247.wav, f0 trace is smaller than window length, resuming to window=5
working on conv-self-LPID_6-Batch_9-LPID_4-Batch_9-Batch_9-PID_69_20550.wav
ValueError: conv-self-LPID_6-Batch_9-LPID_4-Batch_9-Batch_9-PID_69_20550.wav, f0 trace is smaller than window length, resuming to window=5

Here is an example of a file

time_ms f0 ID
0 0.000000 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
1 2.000419 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
2 4.000838 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
3 6.001258 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
4 8.001677 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
5 10.002096 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
6 12.002515 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
7 14.002935 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
8 16.003354 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
9 18.003773 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
10 20.004192 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
11 22.004612 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
12 24.005031 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
13 26.005450 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...
14 28.005869 NaN conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batc...


And here visualized

Extracting spectral centroid

To extract the spectral center of gravity (CoG), we first compute a cepstral envelope to smooth the magnitude spectrum while preserving its overall shape. The envelope is obtained via low-time liftering in the cepstral domain (keeping only the lowest frequencies), which suppresses fine harmonic structure without distorting the spectral contour. The CoG is then computed as the power-weighted mean frequency of this envelope — equivalent to a spectral centroid, but applied to the smoothed rather than raw spectrum.

Functions to compute cepstral envelope and center of gravity
# function to compute cepstral envelope
def cepstral_envelope(mag, lifter_cutoff=30):
    """Compute cepstral envelope from magnitude spectrum.

    Args:
        mag: Magnitude spectrum (positive frequencies only)
        lifter_cutoff: Number of low quefrencies to keep (default: 30)

    Returns:
        envelope: Smoothed magnitude spectrum (positive frequencies only)
    """

    # Avoid log(0)
    mag_safe = np.maximum(mag, 1e-12)

    # Log-magnitude spectrum 
    log_mag = np.log(mag_safe)

    # We assume `mag` comes from an rFFT of length N_fft = 2*(N_bins-1)
    N_bins = mag_safe.shape[0]
    N_fft = 2 * (N_bins - 1)

    # Real cepstrum
    cepstrum = np.fft.irfft(log_mag, n=N_fft)

    # Low-time liftering: keep only low quefrencies
    liftered = np.zeros_like(cepstrum)
    liftered[:lifter_cutoff] = cepstrum[:lifter_cutoff]

    # Back to (smoothed) log spectrum (positive freqs only)
    smooth_log_mag = np.fft.rfft(liftered)

    # Envelope magnitude
    envelope = np.exp(np.real(smooth_log_mag))

    # Safety: ensure same length
    envelope = envelope[:N_bins]

    return envelope

# function to compute center of gravity
def cog_from_envelope(freqs, envelope):
    """Compute center of gravity from frequency envelope.

    Args:
        freqs: Frequency bins (positive frequencies only)
        envelope: Smoothed magnitude spectrum (positive frequencies only)

    Returns:
        cog: Center of gravity frequency (Hz)
    """

    power_spec = envelope ** 2
    total_power = np.sum(power_spec)

    if total_power <= 0:
        return np.nan

    return np.sum(freqs * power_spec) / total_power
window_length = 0.03  # 30 ms analysis window

for audiofile in wavtotrack:

    basename = os.path.basename(audiofile)
    print(f'Working on {basename}')

    # Load sound
    snd = parselmouth.Sound(audiofile)

    # Get sampling rate
    fs = snd.sampling_frequency
    filtered_sound = snd  # use the original sound

    # Compute spectrogram
    spectrogram = filtered_sound.to_spectrogram(window_length=window_length)

    # Time points (s)
    times = spectrogram.xs()

    cog_values = []

    for t in times:
        # Spectrum slice at time t (parselmouth.Spectrum)
        spec_slice = spectrogram.to_spectrum_slice(time=t)

        # Frequencies (Hz) and magnitude spectrum
        freqs = spec_slice.xs()                   # shape (N_bins,)
        mag = np.abs(spec_slice.values[0, :])     # shape (N_bins,)

        # Smoothed spectral envelope (Option C)
        envelope = cepstral_envelope(mag, lifter_cutoff=30)

        # CoG of the envelope
        cog = cog_from_envelope(freqs, envelope)
        cog_values.append(cog)

    # Convert to numpy
    time_cog = np.array(times) * 1000  # ms
    cog_values = np.array(cog_values)

    # Create DataFrame
    cog_df = pd.DataFrame({'time': time_cog, 'CoG': cog_values, 'filename': basename})

    # Replace zeros with NaN (if any silent frames ended up as 0)
    cog_df['CoG'] = cog_df['CoG'].replace(0, np.nan)

    # Smooth the CoG trace
    try:
        cog_df = chunk_and_smooth(cog_df, 'CoG')
    except ValueError:
        print(f'ValueError: {basename}, CoG trace is smaller than window length, using window=5')
        cog_df = chunk_and_smooth(cog_df, 'CoG', window=5)

    # Save
    output_path = os.path.join(ACfolder_processed, f'cog_{basename}.csv')
    cog_df.to_csv(output_path, index=False)
Working on conv-self-LPID_1-Batch_10-LPID_2-Batch_10-Batch_10-PID_82_NaN.wav
Working on conv-self-LPID_1-Batch_10-LPID_3-Batch_10-Batch_10-PID_82_NaN.wav
Working on conv-self-LPID_1-Batch_10-LPID_4-Batch_10-Batch_10-PID_82_1651672469653.wav
Working on conv-self-LPID_2-Batch_10-LPID_1-Batch_10-Batch_10-PID_78_3075.wav
Working on conv-self-LPID_2-Batch_10-LPID_4-Batch_10-Batch_10-PID_78_1651674748055.wav
Working on conv-self-LPID_2-Batch_10-LPID_6-Batch_10-Batch_10-PID_78_2850.wav
Working on conv-self-LPID_3-Batch_10-LPID_1-Batch_10-Batch_10-PID_80_8100.wav
Working on conv-self-LPID_3-Batch_10-LPID_2-Batch_10-Batch_10-PID_80_15475.wav
Working on conv-self-LPID_3-Batch_10-LPID_4-Batch_10-Batch_10-PID_80_NaN.wav
Working on conv-self-LPID_3-Batch_10-LPID_6-Batch_10-Batch_10-PID_80_NaN.wav
Working on conv-self-LPID_4-Batch_10-LPID_1-Batch_10-Batch_10-PID_75_1651672469553.wav
Working on conv-self-LPID_4-Batch_10-LPID_2-Batch_10-Batch_10-PID_75_1651674747930.wav
Working on conv-self-LPID_4-Batch_10-LPID_3-Batch_10-Batch_10-PID_75_10025.wav
Working on conv-self-LPID_4-Batch_10-LPID_6-Batch_10-Batch_10-PID_75_NaN.wav
Working on conv-self-LPID_6-Batch_10-LPID_2-Batch_10-Batch_10-PID_79_NaN.wav
Working on conv-self-LPID_6-Batch_10-LPID_3-Batch_10-Batch_10-PID_79_13625.wav
Working on conv-self-LPID_6-Batch_10-LPID_4-Batch_10-Batch_10-PID_79_3775.wav
Working on conv-self-LPID_1-Batch_4-LPID_3-Batch_4-Batch_4-PID_32_1651052144031.wav
Working on conv-self-LPID_1-Batch_4-LPID_4-Batch_4-Batch_4-PID_32_1651049619527.wav
Working on conv-self-LPID_1-Batch_4-LPID_5-Batch_4-Batch_4-PID_32_1651050501058.wav
Working on conv-self-LPID_1-Batch_4-LPID_6-Batch_4-Batch_4-PID_32_1651051136023.wav
Working on conv-self-LPID_3-Batch_4-LPID_1-Batch_4-Batch_4-PID_30_1651052144631.wav
Working on conv-self-LPID_3-Batch_4-LPID_4-Batch_4-Batch_4-PID_30_1651052811470.wav
Working on conv-self-LPID_3-Batch_4-LPID_5-Batch_4-Batch_4-PID_30_1651051092724.wav
Working on conv-self-LPID_3-Batch_4-LPID_6-Batch_4-Batch_4-PID_30_1651049613133.wav
Working on conv-self-LPID_4-Batch_4-LPID_3-Batch_4-Batch_4-PID_28_1651052810920.wav
Working on conv-self-LPID_4-Batch_4-LPID_5-Batch_4-Batch_4-PID_28_1651052129159.wav
Working on conv-self-LPID_4-Batch_4-LPID_6-Batch_4-Batch_4-PID_28_1651050428177.wav
Working on conv-self-LPID_5-Batch_4-LPID_4-Batch_4-Batch_4-PID_29_1651052129009.wav
Working on conv-self-LPID_5-Batch_4-LPID_6-Batch_4-Batch_4-PID_29_1651052831526.wav
Working on conv-self-LPID_6-Batch_4-LPID_1-Batch_4-Batch_4-PID_33_1651051135973.wav
Working on conv-self-LPID_6-Batch_4-LPID_3-Batch_4-Batch_4-PID_33_1651049611558.wav
Working on conv-self-LPID_6-Batch_4-LPID_4-Batch_4-Batch_4-PID_33_1651050428027.wav
Working on conv-self-LPID_6-Batch_4-LPID_5-Batch_4-Batch_4-PID_33_1651052831501.wav
Working on conv-self-LPID_1-Batch_6-LPID_5-Batch_6-Batch_6-PID_42_NaN.wav
Working on conv-self-LPID_1-Batch_6-LPID_6-Batch_6-Batch_6-PID_42_1651137244213.wav
Working on conv-self-LPID_2-Batch_6-LPID_3-Batch_6-Batch_6-PID_43_1651136342847.wav
Working on conv-self-LPID_2-Batch_6-LPID_4-Batch_6-Batch_6-PID_43_1651137315981.wav
Working on conv-self-LPID_2-Batch_6-LPID_5-Batch_6-Batch_6-PID_43_NaN.wav
Working on conv-self-LPID_2-Batch_6-LPID_6-Batch_6-Batch_6-PID_43_3650.wav
Working on conv-self-LPID_3-Batch_6-LPID_2-Batch_6-Batch_6-PID_46_1651136342797.wav
Working on conv-self-LPID_3-Batch_6-LPID_4-Batch_6-Batch_6-PID_46_1651138760460.wav
Working on conv-self-LPID_3-Batch_6-LPID_5-Batch_6-Batch_6-PID_46_1651137231817.wav
Working on conv-self-LPID_3-Batch_6-LPID_6-Batch_6-Batch_6-PID_46_1651135243380.wav
Working on conv-self-LPID_4-Batch_6-LPID_2-Batch_6-Batch_6-PID_47_1651137316181.wav
Working on conv-self-LPID_4-Batch_6-LPID_3-Batch_6-Batch_6-PID_47_1651138803785.wav
Working on conv-self-LPID_4-Batch_6-LPID_5-Batch_6-Batch_6-PID_47_2425.wav
Working on conv-self-LPID_5-Batch_6-LPID_1-Batch_6-Batch_6-PID_44_8550.wav
Working on conv-self-LPID_5-Batch_6-LPID_2-Batch_6-Batch_6-PID_44_5725.wav
Working on conv-self-LPID_5-Batch_6-LPID_3-Batch_6-Batch_6-PID_44_1651137231867.wav
Working on conv-self-LPID_5-Batch_6-LPID_4-Batch_6-Batch_6-PID_44_NaN.wav
Working on conv-self-LPID_6-Batch_6-LPID_1-Batch_6-Batch_6-PID_49_1651137244138.wav
Working on conv-self-LPID_6-Batch_6-LPID_2-Batch_6-Batch_6-PID_49_NaN.wav
Working on conv-self-LPID_6-Batch_6-LPID_3-Batch_6-Batch_6-PID_49_1651135243405.wav
Working on conv-self-LPID_6-Batch_6-LPID_4-Batch_6-Batch_6-PID_49_1651136381872.wav
Working on conv-self-LPID_6-Batch_6-LPID_5-Batch_6-Batch_6-PID_49_1651138689759.wav
Working on conv-self-LPID_1-Batch_7-LPID_3-Batch_7-Batch_7-PID_55_1651158248671.wav
Working on conv-self-LPID_1-Batch_7-LPID_5-Batch_7-Batch_7-PID_55_NaN.wav
Working on conv-self-LPID_1-Batch_7-LPID_6-Batch_7-Batch_7-PID_55_1651157435596.wav
Working on conv-self-LPID_2-Batch_7-LPID_5-Batch_7-Batch_7-PID_51_NaN.wav
Working on conv-self-LPID_3-Batch_7-LPID_1-Batch_7-Batch_7-PID_54_1651158248821.wav
Working on conv-self-LPID_3-Batch_7-LPID_5-Batch_7-Batch_7-PID_54_37175.wav
Working on conv-self-LPID_3-Batch_7-LPID_6-Batch_7-Batch_7-PID_54_NaN.wav
Working on conv-self-LPID_4-Batch_7-LPID_6-Batch_7-Batch_7-PID_56_1651156229273.wav
Working on conv-self-LPID_5-Batch_7-LPID_1-Batch_7-Batch_7-PID_100_86475.wav
Working on conv-self-LPID_5-Batch_7-LPID_2-Batch_7-Batch_7-PID_100_36725.wav
Working on conv-self-LPID_5-Batch_7-LPID_3-Batch_7-Batch_7-PID_100_NaN.wav
Working on conv-self-LPID_6-Batch_7-LPID_1-Batch_7-Batch_7-PID_57_1651157435821.wav
Working on conv-self-LPID_6-Batch_7-LPID_3-Batch_7-Batch_7-PID_57_5725.wav
Working on conv-self-LPID_6-Batch_7-LPID_4-Batch_7-Batch_7-PID_57_1651156230673.wav
Working on conv-self-LPID_6-Batch_7-LPID_5-Batch_7-Batch_7-PID_57_NaN.wav
Working on conv-self-LPID_1-Batch_8-LPID_2-Batch_8-Batch_8-PID_58_1651242872751.wav
Working on conv-self-LPID_1-Batch_8-LPID_3-Batch_8-Batch_8-PID_58_1651242342774.wav
Working on conv-self-LPID_1-Batch_8-LPID_4-Batch_8-Batch_8-PID_58_NaN.wav
Working on conv-self-LPID_1-Batch_8-LPID_5-Batch_8-Batch_8-PID_58_1651240942058.wav
Working on conv-self-LPID_2-Batch_8-LPID_1-Batch_8-Batch_8-PID_62_1651242872476.wav
Working on conv-self-LPID_2-Batch_8-LPID_3-Batch_8-Batch_8-PID_62_1651240855561.wav
Working on conv-self-LPID_2-Batch_8-LPID_4-Batch_8-Batch_8-PID_62_1651241608347.wav
Working on conv-self-LPID_2-Batch_8-LPID_6-Batch_8-Batch_8-PID_62_1651242212432.wav
Working on conv-self-LPID_3-Batch_8-LPID_1-Batch_8-Batch_8-PID_61_1651242342699.wav
Working on conv-self-LPID_3-Batch_8-LPID_2-Batch_8-Batch_8-PID_61_1651240855686.wav
Working on conv-self-LPID_3-Batch_8-LPID_4-Batch_8-Batch_8-PID_61_1651242860140.wav
Working on conv-self-LPID_3-Batch_8-LPID_5-Batch_8-Batch_8-PID_61_3300.wav
Working on conv-self-LPID_3-Batch_8-LPID_6-Batch_8-Batch_8-PID_61_1651239870949.wav
Working on conv-self-LPID_4-Batch_8-LPID_1-Batch_8-Batch_8-PID_59_7350.wav
Working on conv-self-LPID_4-Batch_8-LPID_2-Batch_8-Batch_8-PID_59_1651241608397.wav
Working on conv-self-LPID_4-Batch_8-LPID_3-Batch_8-Batch_8-PID_59_1651242860115.wav
Working on conv-self-LPID_4-Batch_8-LPID_5-Batch_8-Batch_8-PID_59_1651242227123.wav
Working on conv-self-LPID_4-Batch_8-LPID_6-Batch_8-Batch_8-PID_59_NaN.wav
Working on conv-self-LPID_5-Batch_8-LPID_1-Batch_8-Batch_8-PID_60_1651240943158.wav
Working on conv-self-LPID_5-Batch_8-LPID_2-Batch_8-Batch_8-PID_60_1651239812821.wav
Working on conv-self-LPID_5-Batch_8-LPID_3-Batch_8-Batch_8-PID_60_NaN.wav
Working on conv-self-LPID_5-Batch_8-LPID_4-Batch_8-Batch_8-PID_60_1651242227923.wav
Working on conv-self-LPID_5-Batch_8-LPID_6-Batch_8-Batch_8-PID_60_1651242858056.wav
Working on conv-self-LPID_6-Batch_8-LPID_1-Batch_8-Batch_8-PID_65_59825.wav
Working on conv-self-LPID_6-Batch_8-LPID_2-Batch_8-Batch_8-PID_65_1651242212682.wav
Working on conv-self-LPID_6-Batch_8-LPID_3-Batch_8-Batch_8-PID_65_1651239870999.wav
Working on conv-self-LPID_6-Batch_8-LPID_4-Batch_8-Batch_8-PID_65_6925.wav
Working on conv-self-LPID_6-Batch_8-LPID_5-Batch_8-Batch_8-PID_65_1651242857331.wav
Working on conv-self-LPID_1-Batch_9-LPID_2-Batch_9-Batch_9-PID_71_NaN.wav
Working on conv-self-LPID_1-Batch_9-LPID_4-Batch_9-Batch_9-PID_71_1651497873460.wav
Working on conv-self-LPID_1-Batch_9-LPID_5-Batch_9-Batch_9-PID_71_1651498566567.wav
Working on conv-self-LPID_1-Batch_9-LPID_6-Batch_9-Batch_9-PID_71_1651499147485.wav
Working on conv-self-LPID_2-Batch_9-LPID_1-Batch_9-Batch_9-PID_72_7500.wav
Working on conv-self-LPID_2-Batch_9-LPID_3-Batch_9-Batch_9-PID_72_1651498529238.wav
Working on conv-self-LPID_2-Batch_9-LPID_4-Batch_9-Batch_9-PID_72_1651499072567.wav
Working on conv-self-LPID_2-Batch_9-LPID_5-Batch_9-Batch_9-PID_72_NaN.wav
Working on conv-self-LPID_2-Batch_9-LPID_6-Batch_9-Batch_9-PID_72_1651499677785.wav
Working on conv-self-LPID_3-Batch_9-LPID_1-Batch_9-Batch_9-PID_68_1651499613654.wav
Working on conv-self-LPID_3-Batch_9-LPID_4-Batch_9-Batch_9-PID_68_1651500232309.wav
Working on conv-self-LPID_3-Batch_9-LPID_5-Batch_9-Batch_9-PID_68_1651499081666.wav
Working on conv-self-LPID_3-Batch_9-LPID_6-Batch_9-Batch_9-PID_68_1651497811272.wav
Working on conv-self-LPID_4-Batch_9-LPID_1-Batch_9-Batch_9-PID_70_1651497873135.wav
Working on conv-self-LPID_4-Batch_9-LPID_2-Batch_9-Batch_9-PID_70_1651499072792.wav
Working on conv-self-LPID_4-Batch_9-LPID_3-Batch_9-Batch_9-PID_70_1651500232284.wav
Working on conv-self-LPID_4-Batch_9-LPID_5-Batch_9-Batch_9-PID_70_3825.wav
Working on conv-self-LPID_4-Batch_9-LPID_6-Batch_9-Batch_9-PID_70_NaN.wav
Working on conv-self-LPID_5-Batch_9-LPID_1-Batch_9-Batch_9-PID_67_1651498565717.wav
Working on conv-self-LPID_5-Batch_9-LPID_2-Batch_9-Batch_9-PID_67_3150.wav
Working on conv-self-LPID_5-Batch_9-LPID_3-Batch_9-Batch_9-PID_67_1651499081541.wav
Working on conv-self-LPID_5-Batch_9-LPID_4-Batch_9-Batch_9-PID_67_NaN.wav
Working on conv-self-LPID_5-Batch_9-LPID_6-Batch_9-Batch_9-PID_67_1651500275852.wav
Working on conv-self-LPID_6-Batch_9-LPID_1-Batch_9-Batch_9-PID_69_1651499147110.wav
Working on conv-self-LPID_6-Batch_9-LPID_2-Batch_9-Batch_9-PID_69_1651499678085.wav
Working on conv-self-LPID_6-Batch_9-LPID_3-Batch_9-Batch_9-PID_69_1651497811247.wav
Working on conv-self-LPID_6-Batch_9-LPID_4-Batch_9-Batch_9-PID_69_20550.wav

This is a visual example of a file

References