| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import numpy as np
- from cmsisdsp.sdf.scheduler import *
- from sharedconfig import *
- q15Type = CType(Q15)
- ### The feature computed by the graph is one second of MFCCs.
- ### So the nbMFCCOutputs is computed from this and with the additional
- ### assumption that it must be even.
- ### Because the MFCC slising window is sliding by half a second
- ### each time (half number of MFCCs)
- src=WavSource("src",NBCHANNELS*AUDIO_INTERRUPT_LENGTH)
- src.addLiteralArg(True)
- src.addLiteralArg("test_stereo.wav")
- toMono=StereoToMono("toMono",q15Type,AUDIO_INTERRUPT_LENGTH)
- slidingAudio=SlidingBuffer("audioWin",q15Type,FFTSize,AudioOverlap)
- slidingMFCC=SlidingBuffer("mfccWin",q15Type,numOfDctOutputs*nbMFCCOutputs,numOfDctOutputs*nbMFCCOutputs>>1)
- mfcc=MFCC("mfcc",q15Type,FFTSize,numOfDctOutputs)
- mfcc.addVariableArg("mfccConfig")
- sink=NumpySink("sink",q15Type,nbMFCCOutputs * numOfDctOutputs)
- sink.addVariableArg("dispbuf")
- g = Graph()
- g.connect(src.o, toMono.i)
- g.connect(toMono.o, slidingAudio.i)
- g.connect(slidingAudio.o, mfcc.i)
- g.connect(mfcc.o,slidingMFCC.i)
- g.connect(slidingMFCC.o,sink.i)
- print("Generate graphviz and code")
- sched = g.computeSchedule()
- print("Schedule length = %d" % sched.scheduleLength)
- print("Memory usage %d bytes" % sched.memory)
- #
- conf=Configuration()
- conf.debugLimit=12
- conf.pyOptionalArgs="mfccConfig,dispbuf"
- sched.pythoncode(".",config=conf)
- with open("test.dot","w") as f:
- sched.graphviz(f)
|