Exemplo n.º 1
0
plotOdf = True

order = 10

filename = sys.argv[1]

frameSize = 1024
frameStep = 256

fftSize = 2048

stream, sampleRate, nframes, nchannels, loader = get_framer_audio(
    filename, frameSize, frameStep)

ffter = loudia.FFT(fftSize)
windower = loudia.Window(frameSize, loudia.Window.HAMMING)

subplots = {
    1: ['mag', 'peaki_mags', 'resid_mag', 'synth_mag', 'traj_mags'],
    2: ['phase', 'peak_phases']
}

all_processes = set()
for values in subplots.values():
    all_processes |= set(values)

plotSize = fftSize / 4

subplotCount = max(subplots)

pylab.ion()
Exemplo n.º 2
0
frameStep = 1024

fftSize = 4096
plotSize = fftSize / 4

bandwidth = 4 * fftSize / frameSize

minPeakWidth = 8

peakCandidateCount = 4

stream, sampleRate, nframes, nchannels, loader = get_framer_audio(
    filename, frameSize, frameStep)

ffter = loudia.FFT(fftSize)
windower = loudia.Window(frameSize, loudia.Window.BLACKMANHARRIS)
whitening = loudia.SpectralWhitening(fftSize, 50.0, 6000.0, sampleRate)
pitchACF = loudia.PitchACF(fftSize, sampleRate, minPeakWidth,
                           peakCandidateCount)
acorr = loudia.Autocorrelation(fftSize / 2 + 1, fftSize / 2 + 1)

specs = []
wspecs = []
pitches = []
saliencies = []

if interactivePlot:
    pylab.ion()
    pylab.figure()
    pylab.title('Interactive plot of the FFT vs LPC frequency response')
    pylab.gca().set_ylim([-100, 40])
Exemplo n.º 3
0
#!/usr/bin/env python

# Create input
import scipy
import loudia

frameSize = 121
fftSize = 512
sampleRate = 8000

# Loudia's solution # --------------------------------- #
w = loudia.Window(frameSize, 0)
m = loudia.FFT(fftSize, True)

for i in range(100000):
    a_random = scipy.random.random(frameSize)
    r_random = m.process(w.process(a_random))
# -------------------------------------------------------- #
Exemplo n.º 4
0
import loudia
import pylab

plot = False
frameSize = 121
fftSize = 512
sampleRate = 8000

a_zeros = scipy.zeros(frameSize)
a_ones = scipy.ones(frameSize)
a_random = scipy.random.random(frameSize)
a_sine = scipy.cos(2 * scipy.pi * 440 * scipy.arange(frameSize) / sampleRate +
                   scipy.pi / 4.0)

# Loudia's solution # --------------------------------- #
w = loudia.Window(frameSize, loudia.Window.RECTANGULAR)
m = loudia.FFT(fftSize, False)

r_zeros = m.process(w.process(a_zeros))
r_ones = m.process(w.process(a_ones))
r_random = m.process(w.process(a_random))
r_sine = m.process(w.process(a_sine))
# -------------------------------------------------------- #

# Scipy solution # ---------------------------------- #
s_zeros = scipy.fft(a_zeros, fftSize)[:fftSize / 2 + 1]
s_ones = scipy.fft(a_ones, fftSize)[:fftSize / 2 + 1]
s_random = scipy.fft(a_random, fftSize)[:fftSize / 2 + 1]
s_sine = scipy.fft(a_sine, fftSize)[:fftSize / 2 + 1]
# -------------------------------------------------------- #
Exemplo n.º 5
0
#!/usr/bin/env python

# Create input
import scipy.signal
import loudia

frameSize = 256

a_ones = scipy.ones(frameSize)

# Loudia's solution # --------------------------------- #
m_hanning = loudia.Window(frameSize, 1)
m_hamming = loudia.Window(frameSize, 3)

r_hanning = m_hanning.process(a_ones)
r_hamming = m_hamming.process(a_ones)
# -------------------------------------------------------- #

# Scipy solution # ---------------------------------- #
s_hanning = scipy.signal.hanning(frameSize)
s_hamming = scipy.signal.hamming(frameSize)
# -------------------------------------------------------- #

print 'Hann match: ', scipy.allclose(r_hanning, s_hanning)

print 'Hamming match: ', scipy.allclose(r_hamming, s_hamming)

print(r_hamming - s_hamming).sum()

#import pylab
#pylab.hold(True)
Exemplo n.º 6
0
fftSize = frameSize*2            # samples

miniHopSize = frameSize/4        # samples

print miniHopSize

plotSize = 256

frameCount = 0

#windowType = loudia.Window.BLACKMANHARRIS
#windowType = loudia.Window.HANNING
windowType = loudia.Window.HAMMING
#windowType = loudia.Window.RECTANGULAR

window = loudia.Window(frameSize, windowType)
fft = loudia.FFT(fftSize, True)
unwrapper = loudia.Unwrap()

def process(frame):
    spec = fft.process(window.process(frame))
    return scipy.absolute(spec), scipy.angle(spec)


print 'fftSize: ', fftSize


def mapError(error):
    error[error > scipy.pi] = (2*scipy.pi - error[error>scipy.pi])
    return error