Код: Выделить всё
#Import the libraries
from pylab import *
import numpy
import scipy.signal.signaltools as sigtool
import scipy, pylab
from scipy.io import wavfile
import wave, struct
import scipy.signal as signal
#Open the txt file and read the wave file (also save it as txt file)
f_out = open('mike_1_44100_.txt', 'w')
w = scipy.io.wavfile.read("mike_1_44100_.wav") #here your sound file
a=w[1]
f_out.write('#time #z' + '\n')
#I print to check
print 'vector w'
print w[0],w[1]
print w
i=w[1].size
p=numpy.arange(i)*0.0000226 #to properly define the time signal with the sample rate
print 'vector p:'
print p
x=numpy.dstack([p,a])
print 'vector x:'
print x[0]
#saving file
numpy.savetxt('mike_1_44100_.txt',x[0])
f_out.close()
print 'i:'
print i
# num is the number of samples in the resampled signal.
num= np.ceil(float(i*0.0000226)/0.0015)
print num
y_resample, x_resample = scipy.signal.resample(numpy.abs(a),num, p,axis=0, window=('gaussian',150))
#y_resample, x_resample = scipy.signal.resample(numpy.abs(a), num, p,axis=-1, window=0)
#Aplaying a filter
W1=float(5000)/(float(44100)/2) #the frequency for the cut over the sample frequency
(b, a1) = signal.butter(4, W1, btype='lowpass')
aaa=a
slp =1* signal.filtfilt(b, a1, aaa)
#Taking the abs value of the signal the resample and finaly aplying the hilbert transform
y_resample2 =numpy.sqrt(numpy.abs(np.imag(sigtool.hilbert(slp, axis=-1)))**2+numpy.abs(np.real(sigtool.hilbert(slp, axis=-1)))**2)
print 'x sampled'
#print x_resample
print 'y sampled'
#print y_resample
xx=x_resample #[0]
yy=y_resample #[1]
#ploting with some style
plot(p,a,label='Time Signal') #to plot amplitud vs time
#plot(p,numpy.abs(a),label='Time signal')
plot(xx,yy,label='Resampled time signal Fourier technique Gauss window 1.5 ms ', linewidth=3)
#plot(ww,label='Window', linewidth=3)
#plot(p,y_resample2,label='Hilbert transformed sime signal', linewidth=3)
grid(True)
pylab.xlabel("time [s]")
pylab.ylabel("Amplitde")
legend()
show()
Второй — использовать преобразование Гильберта для получения конверта (теперь я загрузил изображение с преобразованием Гильберта снова система не позволяет меня) Можно запустить мой код и получить два изображения. Но я поставлю эту ссылку http://ceciliajarne.web.unq.edu.ar/?pag ... eview=true
Теперь «конверт» снова терпит неудачу. Я пробовал фильтровать сигнал, как видел в некоторых примерах, но мой сигнал ослабляется, и я не могу получить огибающую. Может ли кто-нибудь помочь мне с моим кодом или с идеей получше, как получить конверт? В качестве примера можно использовать любую птичью песню (я могу дать вам свою), но мне нужно посмотреть, что произойдет с сложные звуки, а не простые сигналы, потому что они очень разные (с простыми звуками подходят оба метода).
Я также попытался адаптировать код, который нашел: http://nipy.org/nitime/examples/mtm_baseband_power.html
Но я не могу получить правильные параметры для своего сигнала и не понимаю модуляционная часть. Я уже задал вопрос разработчикам кода и жду ответа.
Подробнее здесь: https://stackoverflow.com/questions/308 ... ing-python