Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
27 views

Implementing The Amplitude Envelope - Ipynb - Colaboratory

The document discusses calculating and visualizing the amplitude envelope of audio signals. It loads three audio files, calculates basic properties like duration and sampling rate. It then defines functions to calculate the amplitude envelope in frames and plots the envelope in red overlaid on the original waveform for each audio file. This allows viewing the high-amplitude portions of the signal over time.

Uploaded by

kasalasurya16
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views

Implementing The Amplitude Envelope - Ipynb - Colaboratory

The document discusses calculating and visualizing the amplitude envelope of audio signals. It loads three audio files, calculates basic properties like duration and sampling rate. It then defines functions to calculate the amplitude envelope in frames and plots the envelope in red overlaid on the original waveform for each audio file. This allows viewing the high-amplitude portions of the signal over time.

Uploaded by

kasalasurya16
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

6/8/22, 9:24 AM Implementing the amplitude envelope.

ipynb - Colaboratory

import matplotlib.pyplot as plt


import numpy as np
import librosa
import librosa.display
import IPython.display as ipd

Loading audio files

debussy_file = "debussy.wav"
redhot_file = "redhot.wav"
duke_file = "duke.wav"

ipd.Audio(debussy_file)

0:28 / 0:30

ipd.Audio(redhot_file)

0:30 / 0:30

ipd.Audio(duke_file)

---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-ba7c594227e2> in <module>()
----> 1 ipd.Audio(duke_file)

NameError: name 'ipd' is not defined

SEARCH STACK OVERFLOW

# load audio files with librosa


debussy, sr = librosa.load(debussy_file) #sr refers to sampling rate with default val
redhot, _ = librosa.load(redhot_file) # _ refers tp same as above
duke, _ = librosa.load(duke_file)

print(debussy)
print(sr)
print(redhot)
print(duke)
print(_)

https://colab.research.google.com/drive/1MdtcLSRCSu_2wFQQpmC3ha5YA4tXp6-C#scrollTo=-EKbKuYQ7kTr&printMode=true 1/6
6/8/22, 9:24 AM Implementing the amplitude envelope.ipynb - Colaboratory

[-0.01742554 -0.03567505 -0.04995728 ... 0.00912476 0.00866699


0.00964355]
22050
[0.08999634 0.14868164 0.17251587 ... 0.09646606 0.11129761 0.06411743]
[-0.03326416 -0.00845337 0.00415039 ... 0.11965942 0.10794067
0.08566284]
[-0.01742554 -0.03567505 -0.04995728 ... 0.00912476 0.00866699
0.00964355]

Basic information regarding audio files

debussy.shape

(661500,)

# duration in seconds of 1 sample


sample_duration = 1 / sr
print(f"One sample lasts for {sample_duration:6f} seconds")

One sample lasts for 0.000045 seconds

# total number of samples in audio file


tot_samples = len(debussy)
tot_samples

661500

# duration of debussy audio in seconds


duration = 1 / sr * tot_samples
print(f"The audio lasts for {duration} seconds")

The audio lasts for 30.0 seconds

Visualising audio signal in the time domain

plt.figure(figsize=(15, 17))

plt.subplot(3, 1, 1)
librosa.display.waveplot(debussy, alpha=0.5)
plt.ylim((-1, 1))
plt.title("Debusy")

plt.subplot(3, 1, 2)
librosa.display.waveplot(redhot, alpha=0.5)
plt.ylim((-1, 1))
plt.title("RHCP")

plt.subplot(3, 1, 3)

https://colab.research.google.com/drive/1MdtcLSRCSu_2wFQQpmC3ha5YA4tXp6-C#scrollTo=-EKbKuYQ7kTr&printMode=true 2/6
6/8/22, 9:24 AM Implementing the amplitude envelope.ipynb - Colaboratory

librosa.display.waveplot(duke, alpha=0.5)
plt.ylim((-1, 1))
plt.title("Duke Ellington")

plt.show()

https://colab.research.google.com/drive/1MdtcLSRCSu_2wFQQpmC3ha5YA4tXp6-C#scrollTo=-EKbKuYQ7kTr&printMode=true 3/6
6/8/22, 9:24 AM Implementing the amplitude envelope.ipynb - Colaboratory

Calculating amplitude envelope

FRAME_SIZE = 1024
HOP_LENGTH = 512

def amplitude_envelope(signal, frame_size, hop_length):


"""Calculate the amplitude envelope of a signal with a given frame size nad hop length
amplitude_envelope = []

# calculate amplitude envelope for each frame


for i in range(0, len(signal), hop_length):
amplitude_envelope_current_frame = max(signal[i:i+frame_size])
amplitude_envelope.append(amplitude_envelope_current_frame)

return np.array(amplitude_envelope)

def fancy_amplitude_envelope(signal, frame_size, hop_length):


"""Fancier Python code to calculate the amplitude envelope of a signal with a given fr
return np.array([max(signal[i:i+frame_size]) for i in range(0, len(signal), hop_length

# number of frames in amplitude envelope


ae_debussy = amplitude_envelope(debussy, FRAME_SIZE, HOP_LENGTH)
len(ae_debussy)

1292

# calculate amplitude envelope for RHCP and Duke Ellington


ae_redhot = amplitude_envelope(redhot, FRAME_SIZE, HOP_LENGTH)
ae_duke = amplitude_envelope(duke, FRAME_SIZE, HOP_LENGTH)

Visualising amplitude envelope

frames = range(len(ae_debussy))
t = librosa.frames_to_time(frames, hop_length=HOP_LENGTH)

# amplitude envelope is graphed in red

plt.figure(figsize=(15, 17))

ax = plt.subplot(3, 1, 1)
librosa.display.waveplot(debussy, alpha=0.5)
plt.plot(t, ae_debussy, color="r")
plt.ylim((-1, 1))

https://colab.research.google.com/drive/1MdtcLSRCSu_2wFQQpmC3ha5YA4tXp6-C#scrollTo=-EKbKuYQ7kTr&printMode=true 4/6
6/8/22, 9:24 AM Implementing the amplitude envelope.ipynb - Colaboratory

plt.title("Debusy")

plt.subplot(3, 1, 2)
librosa.display.waveplot(redhot, alpha=0.5)
plt.plot(t, ae_redhot, color="r")
plt.ylim((-1, 1))
plt.title("RHCP")

plt.subplot(3, 1, 3)
librosa.display.waveplot(duke, alpha=0.5)
plt.plot(t, ae_duke, color="r")
plt.ylim((-1, 1))
plt.title("Duke Ellington")

plt.show()

https://colab.research.google.com/drive/1MdtcLSRCSu_2wFQQpmC3ha5YA4tXp6-C#scrollTo=-EKbKuYQ7kTr&printMode=true 5/6
6/8/22, 9:24 AM Implementing the amplitude envelope.ipynb - Colaboratory

error 0s completed at 6:48 AM

https://colab.research.google.com/drive/1MdtcLSRCSu_2wFQQpmC3ha5YA4tXp6-C#scrollTo=-EKbKuYQ7kTr&printMode=true 6/6

You might also like