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 daic audio files into 7-second segments.
...: 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\daicwoz_select'
...: li=os.listdir(folder_path)
...:
...: out_root_path=r'C:\Users\marks\Dropbox\JAR Registered Report\Final_version_submisison\data\daicwoz_select_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: 300_AUDIO.wav
Complete segmentation: 301_AUDIO.wav
Complete segmentation: 302_AUDIO.wav
Complete segmentation: 303_AUDIO.wav
Complete segmentation: 304_AUDIO.wav
In [2]: