Laronix_Recording / local /post_processing.py
KevinGeng's picture
push to HF
a1fe393
raw
history blame contribute delete
No virus
2.02 kB
'''
# Post processing module for data recording
# Author: Kevin Geng @Laronix, Sep. 2022
# Load log.csv, generate standard wav files with selected samplerate, and calculate stastitical features
'''
from random import sample
import librosa
import soundfile as sf
import numpy as np
import pdb
from pathlib import Path
import sys
import pandas as pd
indir = Path(sys.argv[1])
assert indir.exists() == True
wavs = Path(indir/Path("Audio_to_Evaluate")).glob("**/*.wav")
log = Path(indir/Path("log.csv"))
# x = np.loadtxt(log, dtype=str, delimiter=",")
x = pd.read_csv(log, header=0)
# y, sr = librosa.load("/home/kevingeng/laronix_automos/Julianna/Audio_to_evaluate/tmp0kgcdpi2.wav", sr=48000)
outdir = indir/Path("output")
# pdb.set_trace()
# outdir_clean = indir/Path("output_clean")
Path.mkdir(outdir, exist_ok=True)
# Path.mkdir(outdir_clean, exist_ok=True)
## Capitalize E valuate
# for i, j in zip(x["Audio_to_Evaluate"], x["Reference_ID"]):
# y, sr = librosa.load(i, sr=48000)
# # kevin 1017 John's trial with original data.
# y_ = librosa.util.normalize(y, norm=5)
# y_cut, index = librosa.effects.trim(y_, top_db=30)
# # normalized and cut
# # pdb.set_trace()
# # sf.write(outdir/Path(str(indir)+"_"+ j +".wav"), y_cut, samplerate=sr)
# sf.write(outdir/Path(Path(indir).stem+"_"+ j +".wav"), y_cut, samplerate=sr)
def process_audio(file_path, ref_id, sr=48000, norm=5, top_db=30):
y, _ = librosa.load(file_path, sr=sr)
y_norm = librosa.util.normalize(y, norm=norm)
y_cut, _ = librosa.effects.trim(y_norm, top_db=top_db)
return y_cut
def save_audio(y_cut, ref_id, outdir, indir, sr=48000):
out_path = outdir / f"{Path(indir).stem}_{ref_id}.wav"
sf.write(out_path, y_cut, samplerate=sr)
def main(audio_files, ref_ids, outdir, indir):
for file_path, ref_id in zip(audio_files, ref_ids):
y_cut = process_audio(file_path, ref_id)
save_audio(y_cut, ref_id, outdir, indir)
main(x["Audio_to_Evaluate"], x["Reference_ID"], outdir, indir)