Beispiel #1
0
        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))
Beispiel #2
0
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' ),
Beispiel #3
0
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                                    '''
'''============================================================================'''
Beispiel #4
0
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)