[Numpy-discussion] IRFFT of sound

Matthieu Brucher matthieu.brucher at gmail.com
Sun Jan 24 09:45:32 EST 2021


Hi,

You need the angle to restore the sound. Otherwise you don't get the
phase information.
Just store the angle information and apply it?

Cheers,

Matthieu

Le dim. 24 janv. 2021 à 14:27, <klark--kent at yandex.ru> a écrit :
>
> Hello friends!
> Maybe that's not directly a Numpy question but I think it can be solved by Numpy.
> I do RFFT of microphone sound and find its absolute value np.abs(). Than I need to do IRFFT but I don't know how to restore sinusoida after np.abs(). I can't not to use 'abs'. I need it in my code. Is there any rough way to restore sound sinusoidal signal from its absolute values. Thank you for your attention!
>
> import numpy as np
> import scipy
> import matplotlib.pyplot as plt
> from scipy.fft import rfft
> from scipy.fft import irfft
>
> amplituda = 200
> width = 20
> CHUNK = 1024
> x1 = np.arange(CHUNK)
> x2 = np.arange(CHUNK//2)
> y = []
> for i in range(len(x1)):
>     y.append(np.sin(x1[i]/width)*amplituda)
>
> fig = plt.figure()
> ax1 = fig.add_subplot(2,2,1)
> ax3 = fig.add_subplot(2,2,2)
> ax2 = fig.add_subplot(2,2,3)
> ax4 = fig.add_subplot(2,2,4)
>
> # RFFT
> y_rfft = rfft(y)
>
> # IRFFT without abs
> y_irfft = irfft(y_rfft)
>
> # IRFFT with abs
> y_irfft_abs = irfft(np.abs(y_rfft))
>
> a = ax1.plot(x1, y, color='green')
> a = ax2.plot(x2, y_rfft[1:513], color='green')
> a = ax3.plot(x1, y_irfft, color='green')
> a = ax4.plot(x1, y_irfft_abs, color='green')
>
> a = ax1.set_title('Raw signal', fontsize = 8)
> a = ax2.set_title('Spectrum (rfft)', fontsize = 8)
> a = ax3.set_title('(irfft) without abs', fontsize = 8)
> a = ax4.set_title('(irfft) with abs "np.abs(y_rfft)"', fontsize = 8)
>
> a = plt.show()
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion



-- 
Quantitative researcher, Ph.D.
Blog: http://blog.audio-tk.com/
LinkedIn: http://www.linkedin.com/in/matthieubrucher


More information about the NumPy-Discussion mailing list