from math import ceil, gcd import numpy as np from scipy.fft import rfft, rfftfreq from scipy.signal import resample_poly input_rate = 800 target_rate = 1200 duration = 0.25 time = np.arange(0, duration, 1 / input_rate) samples = ( np.sin(2 * np.pi * 40 * time) + 0.25 * np.sin(2 * np.pi * 120 * time) )