Python 3.9.7 (default, Sep 16 2021, 16:59:28) [MSC v.1916 64 bit (AMD64)]

Type "copyright", "credits" or "license" for more information.


IPython 7.29.0 -- An enhanced Interactive Python.


In [1]:

   ...: """

   ...: Objective: preprocess CEO audio files into 7-second segments.

   ...: This code needs to be run on supercomputers. The log is produced on a subsample of our main dataset.

   ...: """

   ...:

   ...: # -*- coding: utf-8 -*-

   ...: import os

   ...: import pandas as pd

   ...: import random

   ...: import librosa

   ...: import numpy as np

   ...: from scipy.io import wavfile

   ...:

   ...:

   ...:

   ...: def segmentation(audio_file_path,segment_duration=7,overlap=0.5):

   ...:

   ...: y, sr = librosa.load(audio_file_path, sr=None)

   ...:

   ...: samples_per_segment = int(segment_duration * sr)

   ...: samples_per_overlap = int(samples_per_segment * overlap)

   ...:

   ...:

   ...: n_segments = int(np.ceil(len(y) / samples_per_overlap))

   ...:

   ...:

   ...: segments = np.zeros((n_segments, samples_per_segment))

   ...:

   ...: for i in range(n_segments-1):

   ...: start = i * samples_per_overlap

   ...: end = start + samples_per_segment

   ...: segment = y[start:end]

   ...: segments[i, :len(segment)] = segment

   ...:

   ...:

   ...: segments_resampled = librosa.resample(segments, sr, 8000)

   ...:

   ...:

   ...: segments_16bit = (segments_resampled * (2 ** 15)).astype('int16')

   ...: return segments_16bit

   ...:

   ...:

   ...: folder_path=r'C:\Users\marks\Dropbox\JAR Registered Report\Final_version_submisison\data\audio_files_wav'

   ...: li=os.listdir(folder_path)

   ...:

   ...: out_root_path=r'C:\Users\marks\Dropbox\JAR Registered Report\Final_version_submisison\data\audio_files_wav_segments'

   ...: os.chdir(out_root_path)

   ...:

   ...: for audio_name in li:

   ...:

   ...: audio_file_path=os.path.join(folder_path,audio_name)

   ...:

   ...: segments_16bit=segmentation(audio_file_path,segment_duration=7,overlap=0.5)

   ...:

   ...: for i, segment in enumerate(segments_16bit):

   ...:

   ...: output_filename = f"{audio_name}_segment_{i+1}.wav"

   ...:

   ...: wavfile.write(output_filename, 8000, segment)

   ...:

   ...: print("Complete segmentation:",audio_name)

Complete segmentation: 3M Company (NYSE_MMM) Apr-23-2015 - Audio.wav

Complete segmentation: 3M Company (NYSE_MMM) Apr-24-2018 - Audio.wav

Complete segmentation: 3M Company (NYSE_MMM) Apr-25-2017 - Audio.wav

Complete segmentation: 3M Company (NYSE_MMM) Apr-25-2019 - Audio.wav

Complete segmentation: 3M Company (NYSE_MMM) Apr-26-2016 - Audio.wav


In [2]: