Python scipy.signal.hanning() Examples
The following are 12
code examples of scipy.signal.hanning().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
scipy.signal
, or try the search function
.
Example #1
Source File: preprocessing_utils.py From dagbldr with BSD 3-Clause "New" or "Revised" License | 6 votes |
def stft(X, fftsize=128, mean_normalize=True, compute_onesided=True): """ Compute STFT for 1D input X """ if compute_onesided: local_fft = np.fft.rfft fftsize = 2 * fftsize cut = -1 else: local_fft = np.fft.fft cut = None if mean_normalize: X -= X.mean() X = halfoverlap(X, fftsize) X = X * np.hanning(X.shape[-1])[None] X = local_fft(X)[:, :cut] return X
Example #2
Source File: test_trajectory.py From pwtools with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_smooth(): tr = get_rand_traj() assert len(tr.attrs_nstep) > 0 trs = crys.smooth(tr, hanning(11)) assert len(trs.attrs_nstep) > 0 assert_attrs_not_none(trs, attr_lst=tr.attr_lst) for name in tr.attrs_nstep: a1 = getattr(tr, name) a2 = getattr(trs, name) assert a1.shape == a2.shape assert np.abs(a1 - a2).sum() > 0.0 assert trs.timestep == tr.timestep assert trs.nstep == tr.nstep # reproduce data with kernel [0,1,0] trs = crys.smooth(tr, hanning(3)) for name in tr.attrs_nstep: a1 = getattr(tr, name) a2 = getattr(trs, name) assert np.allclose(a1, a2) trs1 = crys.smooth(tr, hanning(3), method=1) trs2 = crys.smooth(tr, hanning(3), method=2) assert len(trs1.attrs_nstep) > 0 assert len(trs2.attrs_nstep) > 0 for name in tr.attrs_nstep: a1 = getattr(tr, name) a2 = getattr(trs1, name) a3 = getattr(trs2, name) assert np.allclose(a1, a2) assert np.allclose(a1, a3) trs1 = crys.smooth(tr, hanning(11), method=1) trs2 = crys.smooth(tr, hanning(11), method=2) assert len(trs1.attrs_nstep) > 0 assert len(trs2.attrs_nstep) > 0 for name in trs1.attrs_nstep: a1 = getattr(trs1, name) a2 = getattr(trs2, name) assert np.allclose(a1, a2)
Example #3
Source File: audio_tools.py From tools with BSD 3-Clause "New" or "Revised" License | 5 votes |
def ltsd_vad(x, fs, threshold=9, winsize=8192): # winsize based on sample rate # 1024 for fs = 16000 orig_dtype = x.dtype orig_scale_min = x.min() orig_scale_max = x.max() x = (x - x.min()) / (x.max() - x.min()) # works with 16 bit x = x * (2 ** 15) x = x.astype("int32") window = sp.hanning(winsize) ltsd = LTSD(winsize, window, 5) s_vad = ltsd.compute(x) # LTSD is 50% overlap, so each "step" covers 4096 samples # +1 to cover the extra edge window n_samples = int(((len(s_vad) + 1) * winsize) // 2) time_s = n_samples / float(fs) time_points = np.linspace(0, time_s, len(s_vad)) time_samples = (fs * time_points).astype(np.int32) time_samples = time_samples f_vad = np.zeros_like(x, dtype=np.bool) offset = winsize for n, (ss, es) in enumerate(zip(time_samples[:-1], time_samples[1:])): sss = ss - offset if sss < 0: sss = 0 ses = es - offset if ses < 0: ses = 0 if s_vad[n + 1] < threshold: f_vad[sss:ses] = False else: f_vad[sss:ses] = True f_vad[ses:] = False x = x.astype("float64") x = x / float(2 ** 15) x = x * (orig_scale_max - orig_scale_min) + orig_scale_min x = x.astype(orig_dtype) return x[f_vad], f_vad
Example #4
Source File: TFMethods.py From ASP with GNU General Public License v3.0 | 5 votes |
def NMREval(self, xn, xnhat): """ Method to perform NMR perceptual evaluation of audio quality between two signals. Args : xn : (ndarray) 1D Array containing the true time domain signal. xnhat : (ndarray) 1D Array containing the estimated time domain signal. Returns : NMR : (float) A float measurement in dB providing a perceptually weighted evaluation. Below -9 dB can be considered as in-audible difference/error. As appears in : - K. Brandenburg and T. Sporer, “NMR and Masking Flag: Evaluation of Quality Using Perceptual Criteria,” in Proceedings of the AES 11th International Conference on Test and Measurement, Portland, USA, May 1992, pp. 169–179 - J. Nikunen and T. Virtanen, "Noise-to-mask ratio minimization by weighted non-negative matrix factorization," in Acoustics Speech and Signal Processing (ICASSP), 2010 IEEE International Conference on, Dallas, TX, 2010, pp. 25-28. """ mX, _ = TimeFrequencyDecomposition.STFT(xn, hanning(self.nfft/2 + 1), self.nfft, self.nfft/4) mXhat, _ = TimeFrequencyDecomposition.STFT(xnhat, hanning(self.nfft/2 + 1), self.nfft, self.nfft/4) # Compute Error Err = np.abs(mX - mXhat) ** 2. # Acquire Masking Threshold mT = self.maskingThreshold(mX) # Inverse the filter of masking threshold imT = 1./(mT + eps) # Outer/Middle Ear transfer function on the diagonal LTq = 10 ** (self.MOEar()/20.) # NMR computation NMR = 10. * np.log10((1./mX.shape[0]) * self._maxb * np.sum((imT * (Err*LTq)))) print(NMR) return NMR
Example #5
Source File: FMCWteam.py From piradar with GNU Affero General Public License v3.0 | 5 votes |
def main(fn, start, end): fn = Path(fn).expanduser() # rx_array is loading the last 45% of the waveform from the file rx_array = load_bin(fn, start, end) # peak_array holds the indexes of each peak in the waveform # peak_distance is the smallest distance between each peak peak_array, peak_distance = get_peaks(rx_array) l = peak_distance - 1 print("using window: ", l, "\n") # remove first peak peak_array = peak_array[1:] Npulse = len(peak_array) - 1 print(Npulse, "pulses detected") wind = signal.hanning(l) Ntone = 2 Nblockest = 160 fs = 4e6 # [Hz] data = np.empty([Npulse, l]) # set each row of data to window * (first l samples after each peak) for i in range(Npulse): data[i, :] = wind * rx_array[peak_array[i] : peak_array[i] + l] fb_est, sigma = esprit(data, Ntone, Nblockest, fs) print("fb_est", fb_est) print("sigma: ", sigma) drange = (3e8 * fb_est) / (2e6 / 0.1) print("range: ", drange, "\n")
Example #6
Source File: audio.py From representation_mixing with BSD 3-Clause "New" or "Revised" License | 5 votes |
def ltsd_vad(x, fs, threshold=9, winsize=8192): # winsize based on sample rate # 1024 for fs = 16000 orig_dtype = x.dtype orig_scale_min = x.min() orig_scale_max = x.max() x = (x - x.min()) / (x.max() - x.min()) # works with 16 bit x = x * (2 ** 15) x = x.astype("int32") window = sp.hanning(winsize) ltsd = LTSD(winsize, window, 5) s_vad = ltsd.compute(x) # LTSD is 50% overlap, so each "step" covers 4096 samples # +1 to cover the extra edge window n_samples = int(((len(s_vad) + 1) * winsize) // 2) time_s = n_samples / float(fs) time_points = np.linspace(0, time_s, len(s_vad)) time_samples = (fs * time_points).astype(np.int32) time_samples = time_samples f_vad = np.zeros_like(x, dtype=np.bool) offset = winsize for n, (ss, es) in enumerate(zip(time_samples[:-1], time_samples[1:])): sss = ss - offset if sss < 0: sss = 0 ses = es - offset if ses < 0: ses = 0 if s_vad[n + 1] < threshold: f_vad[sss:ses] = False else: f_vad[sss:ses] = True f_vad[ses:] = False x = x.astype("float64") x = x / float(2 ** 15) x = x * (orig_scale_max - orig_scale_min) + orig_scale_min x = x.astype(orig_dtype) return x[f_vad], f_vad
Example #7
Source File: audio_tools.py From representation_mixing with BSD 3-Clause "New" or "Revised" License | 5 votes |
def ltsd_vad(x, fs, threshold=9, winsize=8192): # winsize based on sample rate # 1024 for fs = 16000 orig_dtype = x.dtype orig_scale_min = x.min() orig_scale_max = x.max() x = (x - x.min()) / (x.max() - x.min()) # works with 16 bit x = x * (2 ** 15) x = x.astype("int32") window = sp.hanning(winsize) ltsd = LTSD(winsize, window, 5) s_vad = ltsd.compute(x) # LTSD is 50% overlap, so each "step" covers 4096 samples # +1 to cover the extra edge window n_samples = int(((len(s_vad) + 1) * winsize) // 2) time_s = n_samples / float(fs) time_points = np.linspace(0, time_s, len(s_vad)) time_samples = (fs * time_points).astype(np.int32) time_samples = time_samples f_vad = np.zeros_like(x, dtype=np.bool) offset = winsize for n, (ss, es) in enumerate(zip(time_samples[:-1], time_samples[1:])): sss = ss - offset if sss < 0: sss = 0 ses = es - offset if ses < 0: ses = 0 if s_vad[n + 1] < threshold: f_vad[sss:ses] = False else: f_vad[sss:ses] = True f_vad[ses:] = False x = x.astype("float64") x = x / float(2 ** 15) x = x * (orig_scale_max - orig_scale_min) + orig_scale_min x = x.astype(orig_dtype) return x[f_vad], f_vad
Example #8
Source File: audio_tools.py From tools with BSD 3-Clause "New" or "Revised" License | 4 votes |
def sinusoid_analysis(X, input_sample_rate, resample_block=128, copy=True): """ Contruct a sinusoidal model for the input signal. Parameters ---------- X : ndarray Input signal to model input_sample_rate : int The sample rate of the input signal resample_block : int, optional (default=128) Controls the step size of the sinusoidal model Returns ------- frequencies_hz : ndarray Frequencies for the sinusoids, in Hz. magnitudes : ndarray Magnitudes of sinusoids returned in ``frequencies`` References ---------- D. P. W. Ellis (2004), "Sinewave Speech Analysis/Synthesis in Matlab", Web resource, available: http://www.ee.columbia.edu/ln/labrosa/matlab/sws/ """ X = np.array(X, copy=copy) resample_to = 8000 if input_sample_rate != resample_to: if input_sample_rate % resample_to != 0: raise ValueError("Input sample rate must be a multiple of 8k!") # Should be able to use resample... ? # resampled_count = round(len(X) * resample_to / input_sample_rate) # X = sg.resample(X, resampled_count, window=sg.hanning(len(X))) X = sg.decimate(X, input_sample_rate // resample_to, zero_phase=True) step_size = 2 * round(resample_block / input_sample_rate * resample_to / 2.) a, g, e = lpc_analysis(X, order=8, window_step=step_size, window_size=2 * step_size) f, m = lpc_to_frequency(a, g) f_hz = f * resample_to / (2 * np.pi) return f_hz, m
Example #9
Source File: audio_tools.py From dagbldr with BSD 3-Clause "New" or "Revised" License | 4 votes |
def sinusoid_analysis(X, input_sample_rate, resample_block=128, copy=True): """ Contruct a sinusoidal model for the input signal. Parameters ---------- X : ndarray Input signal to model input_sample_rate : int The sample rate of the input signal resample_block : int, optional (default=128) Controls the step size of the sinusoidal model Returns ------- frequencies_hz : ndarray Frequencies for the sinusoids, in Hz. magnitudes : ndarray Magnitudes of sinusoids returned in ``frequencies`` References ---------- D. P. W. Ellis (2004), "Sinewave Speech Analysis/Synthesis in Matlab", Web resource, available: http://www.ee.columbia.edu/ln/labrosa/matlab/sws/ """ X = np.array(X, copy=copy) resample_to = 8000 if input_sample_rate != resample_to: if input_sample_rate % resample_to != 0: raise ValueError("Input sample rate must be a multiple of 8k!") # Should be able to use resample... ? # resampled_count = round(len(X) * resample_to / input_sample_rate) # X = sg.resample(X, resampled_count, window=sg.hanning(len(X))) X = sg.decimate(X, input_sample_rate // resample_to) step_size = 2 * round(resample_block / input_sample_rate * resample_to / 2.) a, g, e = lpc_analysis(X, order=8, window_step=step_size, window_size=2 * step_size) f, m = lpc_to_frequency(a, g) f_hz = f * resample_to / (2 * np.pi) return f_hz, m
Example #10
Source File: preprocessing_utils.py From dagbldr with BSD 3-Clause "New" or "Revised" License | 4 votes |
def sinusoid_analysis(X, input_sample_rate, resample_block=128, copy=True): """ Contruct a sinusoidal model for the input signal. Parameters ---------- X : ndarray Input signal to model input_sample_rate : int The sample rate of the input signal resample_block : int, optional (default=128) Controls the step size of the sinusoidal model Returns ------- frequencies_hz : ndarray Frequencies for the sinusoids, in Hz. magnitudes : ndarray Magnitudes of sinusoids returned in ``frequencies`` References ---------- D. P. W. Ellis (2004), "Sinewave Speech Analysis/Synthesis in Matlab", Web resource, available: http://www.ee.columbia.edu/ln/labrosa/matlab/sws/ """ X = np.array(X, copy=copy) resample_to = 8000 if input_sample_rate != resample_to: if input_sample_rate % resample_to != 0: raise ValueError("Input sample rate must be a multiple of 8k!") # Should be able to use resample... ? # resampled_count = round(len(X) * resample_to / input_sample_rate) # X = sg.resample(X, resampled_count, window=sg.hanning(len(X))) X = sg.decimate(X, input_sample_rate // resample_to) step_size = 2 * round(resample_block / input_sample_rate * resample_to / 2.) a, g, e = lpc_analysis(X, order=8, window_step=step_size, window_size=2 * step_size) f, m = lpc_to_frequency(a, g) f_hz = f * resample_to / (2 * np.pi) return f_hz, m
Example #11
Source File: audio.py From representation_mixing with BSD 3-Clause "New" or "Revised" License | 4 votes |
def sinusoid_analysis(X, input_sample_rate, resample_block=128, copy=True): """ Contruct a sinusoidal model for the input signal. Parameters ---------- X : ndarray Input signal to model input_sample_rate : int The sample rate of the input signal resample_block : int, optional (default=128) Controls the step size of the sinusoidal model Returns ------- frequencies_hz : ndarray Frequencies for the sinusoids, in Hz. magnitudes : ndarray Magnitudes of sinusoids returned in ``frequencies`` References ---------- D. P. W. Ellis (2004), "Sinewave Speech Analysis/Synthesis in Matlab", Web resource, available: http://www.ee.columbia.edu/ln/labrosa/matlab/sws/ """ X = np.array(X, copy=copy) resample_to = 8000 if input_sample_rate != resample_to: if input_sample_rate % resample_to != 0: raise ValueError("Input sample rate must be a multiple of 8k!") # Should be able to use resample... ? # resampled_count = round(len(X) * resample_to / input_sample_rate) # X = sg.resample(X, resampled_count, window=sg.hanning(len(X))) X = sg.decimate(X, input_sample_rate // resample_to, zero_phase=True) step_size = 2 * round(resample_block / input_sample_rate * resample_to / 2.) a, g, e = lpc_analysis(X, order=8, window_step=step_size, window_size=2 * step_size) f, m = lpc_to_frequency(a, g) f_hz = f * resample_to / (2 * np.pi) return f_hz, m
Example #12
Source File: audio_tools.py From representation_mixing with BSD 3-Clause "New" or "Revised" License | 4 votes |
def sinusoid_analysis(X, input_sample_rate, resample_block=128, copy=True): """ Contruct a sinusoidal model for the input signal. Parameters ---------- X : ndarray Input signal to model input_sample_rate : int The sample rate of the input signal resample_block : int, optional (default=128) Controls the step size of the sinusoidal model Returns ------- frequencies_hz : ndarray Frequencies for the sinusoids, in Hz. magnitudes : ndarray Magnitudes of sinusoids returned in ``frequencies`` References ---------- D. P. W. Ellis (2004), "Sinewave Speech Analysis/Synthesis in Matlab", Web resource, available: http://www.ee.columbia.edu/ln/labrosa/matlab/sws/ """ X = np.array(X, copy=copy) resample_to = 8000 if input_sample_rate != resample_to: if input_sample_rate % resample_to != 0: raise ValueError("Input sample rate must be a multiple of 8k!") # Should be able to use resample... ? # resampled_count = round(len(X) * resample_to / input_sample_rate) # X = sg.resample(X, resampled_count, window=sg.hanning(len(X))) X = sg.decimate(X, input_sample_rate // resample_to, zero_phase=True) step_size = 2 * round(resample_block / input_sample_rate * resample_to / 2.) a, g, e = lpc_analysis(X, order=8, window_step=step_size, window_size=2 * step_size) f, m = lpc_to_frequency(a, g) f_hz = f * resample_to / (2 * np.pi) return f_hz, m