MCPcopy Create free account
hub / github.com/PyTTaMaster/PyTTa / _calc_spectrogram

Function _calc_spectrogram

pytta/_plot.py:959–983  ·  view source on GitHub ↗
(timeSignal, timeVector, samplingRate, overlap, winType,
                      winSize, dBRef)

Source from the content-addressed store, hash-verified

957
958
959def _calc_spectrogram(timeSignal, timeVector, samplingRate, overlap, winType,
960 winSize, dBRef):
961 window = eval('ss.windows.' + winType)(winSize)
962 nextIdx = int(winSize*overlap)
963 rng = int(timeSignal.shape[0]/winSize/overlap - 1)
964 _spectrogram = np.zeros((winSize//2 + 1, rng))
965 _specFreq = np.linspace(0, samplingRate//2, winSize//2 + 1)
966 _specTime = np.linspace(0, timeVector[-1], rng)
967
968 for N in range(rng):
969 try:
970 strIdx = N*nextIdx
971 endIdx = winSize + N*nextIdx
972 sliceAudio = window*timeSignal[strIdx:endIdx]
973 sliceFFT = np.fft.rfft(sliceAudio, axis=0)
974 sliceMag = np.absolute(sliceFFT) * (2/sliceFFT.size)
975 _spectrogram[:, N] = 20*np.log10(sliceMag/dBRef)
976
977 except IndexError:
978 sliceAudio = timeSignal[-winSize:]
979 sliceFFT = np.fft.rfft(sliceAudio, axis=0)
980 sliceMag = np.absolute(sliceFFT) * (2/sliceFFT.size)
981 _spectrogram[:, N] = 20*np.log10(sliceMag)
982
983 return _spectrogram, _specTime, _specFreq
984
985
986def waterfall(sigObjs, step=2 ** 9, n=2 ** 13, fmin=None, fmax=None, pmin=None,

Callers 1

spectrogramFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected