getSpec: Universal spectrogram extractor

View source: R/getSpec.R

getSpecR Documentation

Universal spectrogram extractor

Description

Routes user-friendly strings to various functions for producing spectrogram-like representations (spectrogram, mel-spectrograms, RMS envelopes, spectra, etc.), executes them, and standardizes the output to a matrix with features in rows and time (in ms) in columns.

Usage

getSpec(audio, specFun = "melfcc", specFun_pars = list())

Arguments

audio

a list returned by readAudio

specFun

the function used to extract a spectrogram-like feature matrix. Can be a string or a custom function that takes audio (numeric vector) as the first argument and returns a spectrogram-like matrix with time in columns and features in rows (see examples). Supported strings:

stft_simple

'stft' / STFT / 'stft_simple' (amplitude spectrogram) Parameters in specFun_pars: samplingRate (optional if frequency and time labels are not needed), wl (samples), step (samples), wn, zp, padWithSilence.

spectrogram

'spectrogram' (amplitude spectrogram - a wrapper around stft_simple with more options). Parameters in specFun_pars: see spectrogram.

powspec

'powerspec' (power spectrogram with tuneR). Parameters in specFun_pars: wintime (s), steptime (s), dither.

melfcc

'melspec' (mel-spectrogram with tuneR), 'mfcc' / 'melfcc' (MFCCs). Parameters in specFun_pars: windowLength (ms), step (ms), nbands, maxfreq (Hz), MFCC (integer vector).

audSpectrogram

'audSpectrogram' / 'audSpec' (auditory spectrogram). Parameters in specFun_pars: see audSpectrogram.

getRMS

'getRMS' / 'rms' (RMS amplitude envelope). Parameters in specFun_pars: see getRMS.

getEnv

'getEnv' / 'env' (upsampled envelopes: RMS, analytical, peak, etc.). Parameters in specFun_pars: see getEnv.

spectrum

'spectrum' (short-term spectrum). Parameters in specFun_pars: see spectrum.

meanSpectrum

'meanSpectrum' / 'meanspec' / 'meanSpec' (long-term average spectrum). Parameters in specFun_pars: see meanSpectrum.

ssm

'ssm' (self-similarity matrix). Parameters in specFun_pars: see ssm.

modulationSpectrum

'ms' / 'modulationSpectrum' (modulation spectrum). Parameters in specFun_pars: see modulationSpectrum.

specFun_pars

a list of parameters passed to specFun

Value

Returns a spectrogram-like matrix with time in columns (ms) and features in rows (names as passed by specFun).

Examples

a = rnorm(100)
# call function by name as a string (must be among the recognized strings)
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = 'powspec',  # adds freq labels
        specFun_pars = list(wintime = .02, steptime = .01))
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = 'spectrogram',
        specFun_pars = list(windowLength = 25))
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = 'stft',
        specFun_pars = list(wl = 20))
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = 'melspec',
        specFun_pars = list(nbands = 5))
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = 'env',
        specFun_pars = list(wl = 20))
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = 'ssm',  # ssm itself calls getSpec()
        specFun_pars = list(specFun = 'stft', specFun_pars = list(wl = 20)))
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = 'env',
        specFun_pars = list(wl = 20))
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = 'env',
        specFun_pars = list(wl = 20))
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = 'env',
        specFun_pars = list(wl = 20))
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = 'spectrum',
        specFun_pars = list(wl = 20))

# pass a function object directly (must accept audio as a numeric vector)
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = tuneR::powspec,
        specFun_pars = list(sr = 1600, wintime = .02, steptime = .01))
# (NB: frequency labels not added - must be handled by the specFun itself)
soundgen:::getSpec(audio = soundgen:::readAudio(a, samplingRate = 1600),
        specFun = spectrogram,
        specFun_pars = list(samplingRate = 1600, windowLength = 2, plot = FALSE))

# construct a custom function
soundgen:::getSpec(audio = soundgen:::readAudio(1:10, samplingRate = 20),
        specFun = function(x) matrix(cumsum(x), nrow = 1),
        specFun_pars = list())

soundgen documentation built on Sept. 20, 2026, 5:07 p.m.