Skip to content

Lightweight signal processing library for audio and speech applications

Notifications You must be signed in to change notification settings

Dreamtonics/ciglet

 
 

Repository files navigation

ciglet

Ciglet is a lightweight C library for digital signal processing, in particular audio and speech processing.

Language: C99

License: BSD

Background

In the past few years I've been writing and maintaining quite a few C-written speech processing projects (e.g. libllsm, libpyin, moresampler), some of which were partially translated from Matlab/Octave-based prototypes. Gradually I ended up having lots of frequent rewrites of C version of Matlab routines such as sum, fir1, conv, interp1, etc. In August 2016 I finally made the move to extract all these repeating patterns and group them into one independent library. Since it would be referred by quite a few projects, the new library is meant to be lightweight, easy to link, and fast, which is why it's named ciglet, an acronym of "C-written sIGnal codeLETs".

Function index

Scalar operations

  • random number generation: randu, randn
  • miscellaneous: max, min, linterp, fastatan2
  • complex arithmetics: c_cplx, c_conj, c_add, c_sub, c_mul, c_div, c_exp, c_abs, c_arg

Vector operations and statistics

  • vectorized arithmetics: sumfp, sumsqrfp, maxfp, minfp
  • descriptive statistics: meanfp, varfp, medianfp, xcorr, corr, cov
  • sorting: selectnth, sort
  • peak picking: find_peak, find_valley, find_maxima, find_minima

Numerical routines

fzero, polyval, roots

Basic linear algebra

  • products: matmul, mvecmul, dot
  • solving a linear system: lu, lusolve
  • pivoting: ppivot, permm, permv

Memory (de)allocation

  • enumeration: linspace, iota
  • 2d array operations: malloc2d, free2d, copy2d, flatten, reshape, transpose

Audio I/O

wavread, wavwrite

General DSP routines

  • windows: boxcar, hanning, hamming, mltsine, blackman_harris, nuttall98, blackman
  • Fourier transform: fft, ifft, czt, iczt, idft, dct, fftshift
  • phase manipulation: wrap, unwrap, phase_diff
  • complex number conversion: abscplx, argcplx, polar2real, polar2imag, complete_symm, complete_asymm
  • cepstral analysis: rceps, irceps, minphase
  • filtering: fir1, conv, filter, filtfilt, moving_avg, moving_rms, medfilt1, kalmanf1d, kalmans1d
  • linear prediction: levinson, lpc, flpc, lpgain, lpspec, lpresf
  • interpolation: interp1, interp1u, sincinterp1u, interp_in_blank, rresample
  • operations on sinusoids: gensin, gensins, safe_aliased_sinc, safe_aliased_dsinc
  • miscellaneous: fetch_frame, diff, cumsum, flip ,white_noise, itakura_saito

Audio/speech processing routines

  • psychoacoustics: mel2freq, freq2mel, freq2bark, bark2freq, eqloud, melspace
  • frequency estimation: ifdetector_estimate, correlogram, invcrgm
  • spectrogram and STFT: stft, istft, qifft, spgm2cegm, cegm2spgm
  • filterbank analysis: filterbank_spgm, filterbank_spec, be2cc, be2ccgm
  • spectral envelope estimation: spec2env
  • glottal model: lfmodel_from_rd, lfmodel_spectrum, lfmodel_period

Plotting utilities (Gnuplot interface, unavailable on Windows)

plotopen, plot, imagesc, plotclose

About

Lightweight signal processing library for audio and speech applications

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • C 97.3%
  • Makefile 2.7%