from pathlib import Path
import librosa
import matplotlib.pyplot as plt
def plot_loudness_comparison(audio_path1, audio_path2):
y1, sr1 = librosa.load(audio_path1)
y2, sr2 = librosa.load(audio_path2)
S1 = librosa.feature.rms(y=y1) ** 2 S2 = librosa.feature.rms(y=y2) ** 2
S1_db = librosa.power_to_db(S1, ref=1.0)
S2_db = librosa.power_to_db(S2, ref=1.0)
times1 = librosa.times_like(S1)
times2 = librosa.times_like(S2)
plt.figure(figsize=(12, 6))
plt.plot(times1, S1_db[0], label=f"Audio 1 ({Path(audio_path1).stem})", alpha=0.8)
plt.plot(times2, S2_db[0], label=f"Audio 2 ({Path(audio_path2).stem})", alpha=0.8)
plt.title("Audio Absolute Loudness Comparison")
plt.xlabel("Time (seconds)")
plt.ylabel("Loudness (dB SPL)")
plt.legend()
plt.grid(True)
plt.savefig(
f"loudness_comparison_{Path(audio_path1).stem}_{Path(audio_path2).stem}.png"
)
plt.close()
if __name__ == "__main__":
audio_file_dir_1 = r"Z:\voice"
audio_file_dir_2 = r"Z:\voice_normalized"
files_1 = list(sorted(Path(audio_file_dir_1).glob("*")))
files_2 = list(sorted(Path(audio_file_dir_2).glob("*")))
print(len(files_1), len(files_2))
for file_1, file_2 in list(zip(files_1, files_2))[:20]:
plot_loudness_comparison(file_1, file_2)