Caution
You're reading an old version of this documentation. If you want up-to-date information, please have a look at 0.9.1.
librosa.core.magphase¶
- librosa.core.magphase(D, power=1)[source]¶
Separate a complex-valued spectrogram D into its magnitude (S) and phase (P) components, so that D = S * P.
- Parameters
- Dnp.ndarray [shape=(d, t), dtype=complex]
complex-valued spectrogram
- powerfloat > 0
Exponent for the magnitude spectrogram, e.g., 1 for energy, 2 for power, etc.
- Returns
- D_magnp.ndarray [shape=(d, t), dtype=real]
magnitude of D, raised to power
- D_phasenp.ndarray [shape=(d, t), dtype=complex]
exp(1.j * phi) where phi is the phase of D
Examples
>>> y, sr = librosa.load(librosa.util.example_audio_file()) >>> D = librosa.stft(y) >>> magnitude, phase = librosa.magphase(D) >>> magnitude array([[ 2.524e-03, 4.329e-02, ..., 3.217e-04, 3.520e-05], [ 2.645e-03, 5.152e-02, ..., 3.283e-04, 3.432e-04], ..., [ 1.966e-05, 9.828e-06, ..., 3.164e-07, 9.370e-06], [ 1.966e-05, 9.830e-06, ..., 3.161e-07, 9.366e-06]], dtype=float32) >>> phase array([[ 1.000e+00 +0.000e+00j, 1.000e+00 +0.000e+00j, ..., -1.000e+00 +8.742e-08j, -1.000e+00 +8.742e-08j], [ 1.000e+00 +1.615e-16j, 9.950e-01 -1.001e-01j, ..., 9.794e-01 +2.017e-01j, 1.492e-02 -9.999e-01j], ..., [ 1.000e+00 -5.609e-15j, -5.081e-04 +1.000e+00j, ..., -9.549e-01 -2.970e-01j, 2.938e-01 -9.559e-01j], [ -1.000e+00 +8.742e-08j, -1.000e+00 +8.742e-08j, ..., -1.000e+00 +8.742e-08j, -1.000e+00 +8.742e-08j]], dtype=complex64)
Or get the phase angle (in radians)
>>> np.angle(phase) array([[ 0.000e+00, 0.000e+00, ..., 3.142e+00, 3.142e+00], [ 1.615e-16, -1.003e-01, ..., 2.031e-01, -1.556e+00], ..., [ -5.609e-15, 1.571e+00, ..., -2.840e+00, -1.273e+00], [ 3.142e+00, 3.142e+00, ..., 3.142e+00, 3.142e+00]], dtype=float32)