if x1 - x0 >= 4: yx = interpolate.interp1d(np.linspace(0, 1, x1 - x0), W[x0:x1], "cubic") # Ylocal = yx(Xlocal) pos_norm_pcs.append(yx(Xlocal)) pos_avgpc = np.average(np.array(pos_norm_pcs), 0) return pos_avgpc, pos_orig_pcs, pos_norm_pcs '''===============''' ''' Read wav file ''' '''===============''' name = "alto" W, fps = se.read_wav(f"Samples/{name}.wav") W = W - np.average(W) amp = np.max(np.abs(W)) n = W.size X = np.arange(n) Xpos_orig, Xneg_orig = se.get_frontiers(W) Xpos = hp.refine_frontier_iter(Xpos_orig, W) Xneg = hp.refine_frontier_iter(Xneg_orig, W) siz = min(Xpos.size, Xneg.size) Average_ref_X = (Xpos[:siz] + Xneg[:siz]) / 2 Average_ref_X_smooth = np.round(savgol_filter(Average_ref_X, 51, 3)).astype(np.int) Average_ref_X_smooth = np.unique(np.abs(Average_ref_X_smooth))
import numpy as np from scipy.signal import butter, filtfilt def butter_lowpass_filter(data, fps, cutoff = 2000, order = 2): nyq = 0.5 * fps normal_cutoff = cutoff / nyq # Get the filter coefficients b, a = butter(order, normal_cutoff, btype='low', analog=False) y = filtfilt(b, a, data) return y '''===============''' ''' Read wav file ''' '''===============''' name = "alto" W, fps = se.read_wav(f"C:/Users/tesse/Desktop/Files/Dropbox/0_Science/reps/envelope/test_samples/{name}.wav") W = W - np.average(W) amplitude = np.max(np.abs(W)) W = W / amplitude n = W.size print(f"n={n}") X = np.arange(n) y = butter_lowpass_filter(W, fps) fig = go.Figure() fig.add_trace(go.Scatter( y = W, # line = dict(shape = 'spline' ),
import sys # sys.path.append("signal_envelope/") import numpy as np import signal_envelope as se from scipy import interpolate import plotly.graph_objects as go name = "alto" # name="bend" # name="spoken_voice" W, _ = se.read_wav(f"test_samples/{name}.wav") amp = np.max(np.abs(W)) W = 4 * W / amp X = np.arange(W.size) Xpos, Xneg = se.get_frontiers(W, 0) E = se.get_frontiers(W, 1) f = interpolate.interp1d(E, np.abs(W[E]), kind="linear", fill_value="extrapolate") E = f(X) for i in range(E.size): if E[i] < 0.1: E[i] = 0.1 C = W / E '''============================================================================''' ''' PLOT ''' '''============================================================================'''
def to_plot(Matrix): X = [] Y = [] for line in Matrix: for x, y in enumerate(line): X.append(x) Y.append(y) X.append(None) Y.append(None) return X, Y name = "alto" '''###### Read wav file ######''' W, fps = se.read_wav(f"{name}.wav") W = W - np.average(W) amp = np.max(np.abs(W)) W = W / amp n = W.size '''###### Read Pseudo-cycles info ######''' Xpc = np.genfromtxt(name + ".csv", delimiter=",") X_xpcs, Y_xpcs = [], [] for x in Xpc: X_xpcs.append(x) X_xpcs.append(x) X_xpcs.append(None) Y_xpcs.append(-1) Y_xpcs.append(1) Y_xpcs.append(None)