110 lines
3.2 KiB
Markdown
110 lines
3.2 KiB
Markdown
# Library for Acoustic Signal Processing
|
|
|
|
Welcome to LASP: Library for Acoustic Signal Processing. LASP is a C library
|
|
with a Python interface which is supposed to process (multi-) microphone
|
|
acoustic data in real time on a PC and output results.
|
|
|
|
The main goal of this library will be the processing of data from an
|
|
array of microphones real time, on a Raspberry PI. At the point in
|
|
time of this writing, we are yet unsure whether the Raspberry PI will
|
|
have enough computational power to this end, but may be by the time it
|
|
is finished, we have a new faster generation :).
|
|
|
|
Current features that are implemented:
|
|
- Compile-time determination of the floating-point accuracy (32/64 bit)
|
|
- Fast convolution FIR filter implementation
|
|
- Sample rate decimation by an integer factor of 4.
|
|
- Octave filterbank FIR filters designed to comply with IEC 61260
|
|
(1995).
|
|
- Averaged power spectra and power spectral density determination
|
|
using Welch' method. Taper functions of Hann, Hamming, Bartlett and
|
|
Blackman are provided.
|
|
- A thread-safe job queue including routines to create worker threads.
|
|
- Several linear algebra routines (wrappers around BLAS and LAPACK).
|
|
- A nice debug tracer implementation
|
|
- Third octave filter bank FIR filters designed to comply with IEC 61260
|
|
(1995).
|
|
- Slow and fast time updates of (A/C/Z) weighted sound pressure levels
|
|
|
|
Future features (wish-list)
|
|
- Conventional and delay-and-sum beam-forming algorithms
|
|
|
|
For now, the source code is well-documented but it requires some
|
|
additional documentation (the math behind it). This will be published
|
|
in a sister repository (https://code.ascee.nl/ascee/lasp-doc).
|
|
|
|
If you have any question(s), please feel free to contact us: info@ascee.nl.
|
|
|
|
|
|
# Building from source
|
|
|
|
Two commands that install all requirements (for Ubuntu / Linux Mint)
|
|
|
|
- `pip install scipy numpy build scikit-build appdirs`
|
|
- `sudo apt install libusb-dev
|
|
|
|
## Runtime dependencies (Linux)
|
|
|
|
- FFTW (For really fast FFT's). If compiled with Ffftpack, this library is not
|
|
required.
|
|
- libUlDAQ, for the Measurement Computing DT9837A USB DAQ box
|
|
- GNU Autotools, for compiling libUlDAQ
|
|
- RtAudio, for Audio DAQ backends
|
|
- libusb
|
|
- BLAS (OpenBLAS, other).
|
|
- RtAudio (optional)
|
|
- UlDaq (optional)
|
|
|
|
## Editable install
|
|
|
|
In the root directory of the repository, run:
|
|
|
|
- `pip3 isntall --user --prefix=~/.local -e .`
|
|
- `cmake .`
|
|
- `make -j`
|
|
|
|
|
|
|
|
## Build dependencies
|
|
|
|
Optional dependencies, which can be turned ON/OFF using CMake:
|
|
|
|
- Build tools: compiler [http://cmake.org](CMake), the Python packages:
|
|
- Scipy
|
|
- Numpy
|
|
- py-build-cmake
|
|
- appdirs
|
|
These can all be installed using:
|
|
|
|
- The following Python packages need also be available:
|
|
- `Scipy` (which includes Numpy). Install with `sudo apt install
|
|
python3-scipy`, or `pacman -S scipy`.
|
|
- `appdirs`, which can be grabbed from [https://pypi.org](Pypi)
|
|
|
|
|
|
|
|
## Compilation of LASP
|
|
|
|
### Archlinux
|
|
|
|
Compiling the code on Archlinux requires the following packages to be available:
|
|
|
|
- openblas-lapack (AUR)
|
|
- Python>=3.7
|
|
- Numpy (Python-numpy)
|
|
- Cython
|
|
|
|
### Ubuntu / Linux Mint
|
|
|
|
*Only tested with Linux Mint 18.04*, we require the following packages for
|
|
compilation:
|
|
|
|
- build-essential
|
|
- cython
|
|
- python3-numpy
|
|
- libopenblas
|
|
- libclalsadrv-dev
|
|
- libopenblas-base
|
|
- libopenblas-dev
|
|
|