python nextpow2_Python signal.hann方法代码示例

本文展示了Python中scipy.signal.hann方法在不同场景下的应用,包括STFT、音频处理、图像处理和信号处理等。通过11个代码示例,详细解释了如何使用Hanning窗口进行数据处理,例如在短时傅立叶变换、信号截取和重建等方面的应用。
摘要由CSDN通过智能技术生成

本文整理汇总了Python中scipy.signal.hann方法的典型用法代码示例。如果您正苦于以下问题:Python signal.hann方法的具体用法?Python signal.hann怎么用?Python signal.hann使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在模块scipy.signal的用法示例。

在下文中一共展示了signal.hann方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: STFT

​点赞 5

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def STFT(self, x, samplingFreq, framesz, hop):

"""

Computes STFT for a given sound wave using Hanning window.

"""

framesamp = int(framesz * samplingFreq)

print 'FRAMESAMP: ' + str(framesamp)

hopsamp = int(hop * samplingFreq)

print 'HOP SAMP: ' + str(hopsamp)

# Modification: using Hanning window instead of Hamming - by Pertusa

w = signal.hann(framesamp)

X = numpy.array([numpy.fft.fft(w * x[i:i + framesamp])

for i in range(0, len(x) - framesamp, hopsamp)])

return X

开发者ID:Agerrr,项目名称:Automated_Music_Transcription,代码行数:16,

示例2: __init__

​点赞 5

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def __init__(self, target_sz, ):

init_target_sz = target_sz

num_scales = config.number_of_scales_filter

scale_step = config.scale_step_filter

scale_sigma = config.number_of_interp_scales * config.scale_sigma_factor

scale_exp = np.arange(-np.floor(num_scales - 1)/2,

np.ceil(num_scales-1)/2+1,

dtype=np.float32) * config.number_of_interp_scales / num_scales

scale_exp_shift = np.roll(scale_exp, (0, -int(np.floor((num_scales-1)/2))))

interp_scale_exp = np.arange(-np.floor((config.number_of_interp_scales-1)/2),

np.ceil((config.number_of_interp_scales-1)/2)+1,

dtype=np.float32)

interp_scale_exp_shift = np.roll(interp_scale_exp, [0, -int(np.floor(config.number_of_interp_scales-1)/2)])

self.scale_size_factors = scale_step ** scale_exp

self.interp_scale_factors = scale_step ** interp_scale_exp_shift

ys = np.exp(-0.5 * (scale_exp_shift ** 2) / (scale_sigma ** 2))

self.yf = np.real(fft(ys))[np.newaxis, :]

self.window = signal.hann(ys.shape[0])[np.newaxis, :].astype(np.float32)

# make sure the scale model is not to large, to save computation time

if config.scale_model_factor**2 * np.prod(init_target_sz) > config.scale_model_max_area:

scale_model_factor = np.sqrt(config.scale_model_max_area / np.prod(init_target_sz))

else:

scale_model_factor = config.scale_model_factor

# set the scale model size

self.scale_model_sz = np.maximum(np.floor(init_target_sz * scale_model_factor), np.array([8, 8]))

self.max_scale_dim = config.s_num_compressed_dim == 'MAX'

if self.max_scale_dim:

self.s_num_compressed_dim = len(self.scale_size_factors)

self.num_scales = num_scales

self.scale_step = scale_step

self.scale_factors = np.array([1])

开发者ID:StrangerZhang,项目名称:pyECO,代码行数:40,

示例3: power_spectrum

​点赞 5

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def power_spectrum(signal: np.ndarray,

fs: int,

window_width: int,

window_overlap: int) -> (np.ndarray, np.ndarray, np.ndarray):

"""

Computes the power spectrum of the specified signal.

A periodic Hann window with the specified width and overlap is used.

Parameters

----------

signal: numpy.ndarray

The input signal

fs: int

Sampling frequency of the input signal

window_width: int

Width of the Hann windows in samples

window_overlap: int

Overlap between Hann windows in samples

Returns

-------

f: numpy.ndarray

Array of frequency values for the first axis of the returned spectrogram

t: numpy.ndarray

Array of time values for the second axis of the returned spectrogram

sxx: numpy.ndarray

Power spectrogram of the input signal with axes [frequency, time]

"""

f, t, sxx = spectrogram(x=signal,

fs=fs,

window=hann(window_width, sym=False),

noverlap=window_overlap,

mode="magnitude")

return f, t, (1.0 / window_width) * (sxx ** 2)

开发者ID:auDeep,项目名称:auDeep,代码行数:38,

示例4: chop

​点赞 5

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def chop(signal, hop_size=256, frame_size=512):

n_hops = len(signal) // hop_size

frames = []

hann_win = hann(frame_size)

for hop_i in range(n_hops):

frame = signal[(hop_i * hop_size):(hop_i * hop_size + frame_size)]

frame = np.pad(frame, (0, frame_size - len(frame)), 'constant')

frame *= hann_win

frames.append(frame)

frames = np.array(frames)

return frames

开发者ID:pkmital,项目名称:time-domain-neural-audio-style-transfer,代码行数:13,

示例5: chop

​点赞 5

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def chop(signal, hop_size=256, frame_size=512):

n_hops = len(signal) // hop_size

s = []

hann_win = hann(frame_size)

for hop_i in range(n_hops):

frame = signal[(hop_i * hop_size):(hop_i * hop_size + frame_size)]

frame = np.pad(frame, (0, frame_size - len(frame)), 'constant')

frame *= hann_win

s.append(frame)

s = np.array(s)

return s

开发者ID:pkmital,项目名称:time-domain-neural-audio-style-transfer,代码行数:13,

示例6: __init__

​点赞 5

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def __init__(self, target_sz,config):

init_target_sz = target_sz

self.config=config

num_scales = self.config.number_of_scales_filter

scale_step = self.config.scale_step_filter

scale_sigma = self.config.number_of_interp_scales * self.config.scale_sigma_factor

scale_exp = np.arange(-np.floor(num_scales - 1)/2,

np.ceil(num_scales-1)/2+1,

dtype=np.float32) * self.config.number_of_interp_scales / num_scales

scale_exp_shift = np.roll(scale_exp, (0, -int(np.floor((num_scales-1)/2))))

interp_scale_exp = np.arange(-np.floor((self.config.number_of_interp_scales - 1) / 2),

np.ceil((self.config.number_of_interp_scales - 1) / 2) + 1,

dtype=np.float32)

interp_scale_exp_shift = np.roll(interp_scale_exp, [0, -int(np.floor(self.config.number_of_interp_scales - 1) / 2)])

self.scale_size_factors = scale_step ** scale_exp

self.interp_scale_factors = scale_step ** interp_scale_exp_shift

ys = np.exp(-0.5 * (scale_exp_shift ** 2) / (scale_sigma ** 2))

self.yf = np.real(fft(ys))[np.newaxis, :]

self.window = signal.hann(ys.shape[0])[np.newaxis, :].astype(np.float32)

# make sure the scale model is not to large, to save computation time

if self.config.scale_model_factor**2 * np.prod(init_target_sz) > self.config.scale_model_max_area:

scale_model_factor = np.sqrt(self.config.scale_model_max_area / np.prod(init_target_sz))

else:

scale_model_factor = self.config.scale_model_factor

# set the scale model size

self.scale_model_sz = np.maximum(np.floor(init_target_sz * scale_model_factor), np.array([8, 8]))

self.max_scale_dim = self.config.s_num_compressed_dim == 'MAX'

if self.max_scale_dim:

self.s_num_compressed_dim = len(self.scale_size_factors)

self.num_scales = num_scales

self.scale_step = scale_step

self.scale_factors = np.array([1])

开发者ID:fengyang95,项目名称:pyCFTrackers,代码行数:41,

示例7: apply

​点赞 5

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def apply(self, data):

axis = data.ndim - 1

out = resample(data, self.f, axis=axis, window=hann(M=data.shape[axis]))

return out

开发者ID:MichaelHills,项目名称:seizure-detection,代码行数:6,

示例8: inverse_stft

​点赞 5

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def inverse_stft(stft_mat,

frame_len=1024,

frame_hop=256,

center=False,

window="hann",

transpose=True,

norm=None,

power=None,

nsamps=None):

"""

iSTFT wrapper, using librosa

"""

if transpose:

stft_mat = np.transpose(stft_mat)

if window == "sqrthann":

window = ss.hann(frame_len, sym=False)**0.5

# orignal istft accept stft result(matrix, shape as FxT)

samps = librosa.istft(stft_mat,

frame_hop,

win_length=frame_len,

window=window,

center=center,

length=nsamps)

# keep same amplitude

if norm:

samps_norm = np.linalg.norm(samps, np.inf)

samps = samps * norm / (samps_norm + EPSILON)

# keep same power

if power:

samps_pow = np.linalg.norm(samps, 2)**2 / samps.size

samps = samps * np.sqrt(power / samps_pow)

return samps

开发者ID:funcwj,项目名称:setk,代码行数:34,

示例9: griffin_lim

​点赞 5

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def griffin_lim(mag,

frame_len=1024,

frame_hop=256,

round_power_of_two=True,

window="hann",

center=True,

transpose=True,

norm=None,

epoches=30):

"""

Griffin Lim Algothrim

"""

# TxF -> FxT

if transpose:

mag = np.transpose(mag)

n_fft = nextpow2(frame_len) if round_power_of_two else frame_len

stft_kwargs = {

"hop_length": frame_hop,

"win_length": frame_len,

"window": window,

"center": center

}

phase = np.exp(2j * np.pi * np.random.rand(*mag.shape))

samps = librosa.istft(mag * phase, **stft_kwargs)

for _ in range(epoches):

stft_mat = librosa.stft(samps, n_fft=n_fft, **stft_kwargs)

phase = np.exp(1j * np.angle(stft_mat))

samps = librosa.istft(mag * phase, **stft_kwargs)

if norm:

samps_norm = np.linalg.norm(samps, np.inf)

samps = samps * norm / (samps_norm + EPSILON)

return samps

开发者ID:funcwj,项目名称:setk,代码行数:34,

示例10: stft

​点赞 4

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def stft(signal, fs, nfft, overlap):

#plotting time domain signal

plt.figure(1)

t = np.arange(0,len(signal)/fs, 1/fs)

plt.plot(t,signal)

plt.axis(xmax = 1)

plt.xlabel('Time in seconds')

plt.ylabel('Amplitude')

plt.title('Speech signal')

if not np.log2(nfft).is_integer():

nfft = nearestPow2(nfft)

slength = len(signal)

hop_size = np.int32(overlap * nfft)

nFrames = int(np.round(len(signal)/(nfft-hop_size)))

#zero padding to make signal length long enough to have nFrames

signal = np.append(signal, np.zeros(nfft))

STFT = np.empty((nfft, nFrames))

segment = np.zeros(nfft)

start = 0

for n in range(nFrames):

segment = signal[start:start+nfft] * hann(nfft)

padded_seg = np.append(segment,np.zeros(nfft))

spec = fftshift(fft(padded_seg))

spec = spec[len(spec)/2:]

spec = abs(spec)/max(abs(spec))

powerspec = 20*np.log10(spec)

STFT[:,n] = powerspec

start = start + nfft - hop_size

#plot spectrogram

plt.figure(2)

freq = (fs/(2*nfft)) * np.arange(0,nfft,1)

time = np.arange(0,nFrames)*(slength/(fs*nFrames))

plt.imshow(STFT, extent = [0,max(time),0,max(freq)],origin='lower', cmap='jet', interpolation='nearest', aspect='auto')

plt.ylabel('Frequency in Hz')

plt.xlabel('Time in seconds')

plt.axis([0,max(time),0,np.max(freq)])

plt.title('Spectrogram of speech')

plt.show()

return (STFT, time, freq)

开发者ID:orchidas,项目名称:Speaker-Recognition,代码行数:45,

示例11: forward_stft

​点赞 4

# 需要导入模块: from scipy import signal [as 别名]

# 或者: from scipy.signal import hann [as 别名]

def forward_stft(samps,

frame_len=1024,

frame_hop=256,

round_power_of_two=True,

center=False,

window="hann",

apply_abs=False,

apply_log=False,

apply_pow=False,

transpose=True):

"""

STFT wrapper, using librosa

"""

if apply_log and not apply_abs:

warnings.warn("Ignore apply_abs=False because apply_log=True")

apply_abs = True

if samps.ndim != 1:

raise RuntimeError("Invalid shape, librosa.stft accepts mono input")

# pad fft size to power of two or left it same as frame length

n_fft = nextpow2(frame_len) if round_power_of_two else frame_len

if window == "sqrthann":

window = ss.hann(frame_len, sym=False)**0.5

# orignal stft accept samps(vector) and return matrix shape as F x T

# NOTE for librosa.stft:

# 1) win_length <= n_fft

# 2) if win_length is None, win_length = n_fft

# 3) if win_length < n_fft, pad window to n_fft

stft_mat = librosa.stft(samps,

n_fft,

frame_hop,

win_length=frame_len,

window=window,

center=center)

# stft_mat: F x T or N x F x T

if apply_abs:

stft_mat = cmat_abs(stft_mat)

if apply_pow:

stft_mat = np.power(stft_mat, 2)

if apply_log:

stft_mat = np.log(np.maximum(stft_mat, EPSILON))

if transpose:

stft_mat = np.transpose(stft_mat)

return stft_mat

# accept F x T or T x F (tranpose=True)

开发者ID:funcwj,项目名称:setk,代码行数:48,

注:本文中的scipy.signal.hann方法示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值