In [ ]:
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import Audio, display

In [ ]:
%matplotlib inline
plt.rcParams.update({'font.size': 18})

In [ ]:
def beat_freq(f, max_time, rate):
    t = np.linspace(0, max_time, rate*max_time)
    signal = np.sin(2*np.pi*f*t)
    display(Audio(data=signal, rate=rate))
    return signal

In [ ]:
signal_250 = beat_freq(250.0, 1, 11025)
signal_275 = beat_freq(275.0, 1, 11025)
signal_300 = beat_freq(300.0, 1, 11025)

In [ ]:
signal = np.hstack((signal_275+signal_300, signal_275+signal_250))

In [ ]:
fig1 = plt.figure(figsize=(10, 8), facecolor='white')
plt.specgram(signal, NFFT=4096, Fs=11025, noverlap=2048, cmap='viridis')
ax1 = plt.gca()
ax1.set_ylim([0, 600])
plt.xlabel('Time bin [s]')
plt.ylabel('Frequency [Hz]')
plt.show()

In [ ]:
fig2 = plt.figure(figsize=(10, 8), facecolor='white')
plt.specgram(signal, NFFT=1024, Fs=11025, noverlap=512, cmap='viridis')
ax2 = plt.gca()
ax2.set_ylim([0, 600])
plt.xlabel('Time bin [s]')
plt.ylabel('Frequency [Hz]')
plt.show()