All notable changes to pyroomacoustics will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Nothing yet.
0.6.0 - 2021-11-29
- New DOA method: MUSIC with pseudo-spectra normalization. Thanks @4bian! Normalizes MUSIC pseudo spectra before averaging across frequency axis.
- Issue 235: fails when set_ray_tracing is called, but no mic_array is set
- Issue 236: general ISM produces the wrong transmission coefficients
- Removes an unncessery warning for some rooms when ray tracing is not needed
- Unify code format by using Black
- Add code linting in continuous integration
- Drop CI support for python 3.5
0.5.0 - 2021-09-06
- Adds tracking of reflection order with respect to x/y/z axis in the shoebox image source model engine. The orders are available in source.orders_xyz after running the image source model
- Support for microphone and source directivites for image source model. Source directivities just for shoebox room. Available directivities are frequency-independent (cardioid patterns), although the infrastructure is there for frequency-dependent directivities: frequency-dependent usage in Room.compute_rir and abstract Directivity class.
- Examples scripts and notebook for directivities.
- Fix wrong bracketing for negative values in is_inside (ShoeBox)
0.4.3 - 2021-02-18
- Support for Python 3.8 and 3.9
- Fixes typo in a docstring
- Update docs to better reflect actual function parameters
- Fixes the computation of the cost function of SRP-PHAT doa algorithm (bug reported in #PR197)
- Improve the computation of the auxiliary variables in AuxIVA and ILRMA. Unnecessary division operations are reduced.
0.4.2 - 2020-09-24
- Fixes the Dockerfile so that we don't have to install the build dependencies manually
- Change the eps for geometry computations from 1e-4 to 1e-5 in
libroom
- A specialized
is_inside
routine forShoeBox
rooms
0.4.1 - 2020-07-02
- Issue #162 (crash with max_order>31 on windows), seems fixed by the new C++ simulator
- Test for issue #162 added
- Fix Binder link
- Adds the pyproject.toml file in MANIFEST.in so that it gets picked up for packaging
- Minimal Dockerfile example.
0.4.0 - 2020-06-03
- Ray Tracing in the libroom module. The function compute_rir() of the Room object in python can now be executed using a pure ray tracing approach or a hybrid (ISM + RT) approach. That's why this function has now several default arguments to run ray tracing (number of rays, scattering coefficient, energy and time thresholds, microphone's radius).
- Bandpass filterbank construction in
pyroomacoustics.acoustics.bandpass_filterbank
- Acoustic properties of different materials in
pyroomacoustics.materials
- Scattering from the wall is handled via ray tracing method, scattering coefficients are provided
in
pyroomacoustics.materials.Material
objects - Function
inverse_sabine
allows to compute theabsorption
andmax_order
to use with the image source model to achieve a given reverberation time - The method
rt60_theory
inpyroomacoustics.room.Room
allows to compute the theoretical RT60 of the room according to Eyring or Sabine formula - The method
measure_rt60
inpyroomacoustics.room.Room
allows to measure the RT60 of the simulated RIRs
- Deep refactor of Room class. The constructor arguments have changed
- No more
sigma2_awgn
, noise is now handled inpyroomacoustics.Room.simulate
method - The way absorption is handled has changed. The scalar variables
absorption
are deprecated in favor ofpyroomacoustics.materials.Material
- Complete refactor of libroom, the compiled extension module responsible for the room simulation, into C++. The bindings to python are now done using pybind11.
- Removes the pure Python room simulator as it was really slow
pyroomacoustics.transform.analysis
,pyroomacoustics.transform.synthesis
,pyroomacoustics.transform.compute_synthesis_window
, have been deprecated in favor ofpyroomacoustics.transform.stft.analysis
,pyroomacoustics.transform.stft.synthesis
,pyroomacoustics.transform.stft.compute_synthesis_window
.pyroomacoustics.Room
has a new methodadd
that can be used to add either aSoundSource
, or aMicrophoneArray
object. Subsequent calls to the method will always add source/microphones. There exists also methodsadd_source
andadd_microphone
that can be used to add source/microphone via coordinates. The methodadd_microphone_array
can be used to add aMicrophoneArray
object, or a 2D array containing the locations of several microphones in its columns. While theadd_microphone_array
method used to replace the existing array by the argument, the new behavior is to add in addition to other microphones already present.
- From Issue #150, increase max iterations to check if point is inside room
- Issues #117 #163, adds project file pyproject.toml so that pip can know which dependencies are necessary for setup
- Fixed some bugs in the documentation
- Fixed normalization part in FastMNMF
- Added room_isinside_max_iter in parameters.py
- Default set to 20 rather than 5 as it was in pyroomacoustics.room.Room.isinside
- Added Binder link in the README for online interactive demo
- Changed while loop to iterate up to room_isinside_max_iter in pyroomacoustics.room.Room.isinside
- Changed initialization of FastMNMF to accelerate convergence
- Fixed bug in doa/tops (float -> integer division)
- Added vectorised functions in MUSIC
- Use the vectorised functions in _process of MUSIC
0.3.1 - 2019-11-06
- Fixed a non-unicode character in
pyroomacoustics.experimental.rt60
breaking the tests
0.3.0 - 2019-11-06
- The routine
pyroomacoustics.experimental.measure_rt60
to automatically measure the reverberation time of impulse responses. This is useful for measured and simulated responses.
- Fixed docstring and an argument of pyroomacoustics.bss.ilrma
0.2.0 - 2019-09-04
- Added FastMNMF (Fast Multichannel Nonnegative Matrix Factorization) to
bss
subpackage. - Griffin-Lim algorithm for phase reconstruction from STFT magnitude measurements.
- Removed the supperfluous warnings in pyroomacoustics.transform.stft.
- Add option in pyroomacoustics.room.Room.plot_rir to set pair of channels to plot; useful when there's too many impulse responses.
- Add some window functions in windows.py and rearranged it in alphabetical order
- Fixed various warnings in tests.
- Faster implementation of AuxIVA that also includes OverIVA (more mics than sources). It also comes with a slightly changed API, Laplace and time-varying Gauss statistical models, and two possible initialization schemes.
- Faster implementation of ILRMA.
- SparseAuxIVA has slightly changed API,
f_contrast
has been replaced bymodel
keyword argument.
- Set
rcond=None
in all calls tonumpy.linalg.lstsq
to remove aFutureWarning
- Add a lower bound to activations in
pyroomacoustics.bss.auxiva
to avoid underflow and divide by zero. - Fixed a memory leak in the C engine for polyhedral room (issue #116).
- Fixed problem caused by dependency of setup.py on Cython (Issue #117)
0.1.23 - 2019-04-17
- Expose
mu
parameter foradaptive.subband_lms.SubbandLMS
. - Add SSL context to
download_uncompress
and unit test; error for Python 2.7.
0.1.22 - 2019-04-11
- Added "precision" parameter to "stft" class to choose between 'single' (float32/complex64) or 'double' (float64/complex128) for processing precision.
- Unified unit test file for frequency-domain souce separation methods.
- New algorithm for blind source separation (BSS): Sparse Independent Vector Analysis (SparseAuxIVA).
- Few README improvements
- Remove
np.squeeze
in STFT as it caused errors when an axis that shouldn't be squeezed was equal to 1. Beamformer.process
was using old (non-existent) STFT function. Changed to using one-shot function fromtransform
module.- Fixed a bug in
utilities.fractional_delay_filter_bank
that would cause the function to crash on some inputs (issue #87).
0.1.21 - 2018-12-20
- Adds several options to
pyroomacoustics.room.Room.simulate
to finely control the SNR of the microphone signals and also return the microphone signals with individual sources, prior to mix (useful for BSS evaluation) - Add subspace denoising approach in
pyroomacoustics.denoise.subspace
. - Add iterative Wiener filtering approach for single channel denoising in
pyroomacoustics.denoise.iterative_wiener
.
- Add build instructions for python 3.7 and wheels for Mac OS X in the continuous integration (Travis and Appveyor)
- Limits imports of matplotlib to within plotting functions so that the matplotlib backend can still be changed, even after importing pyroomacoustics
- Better Vectorization of the computations in
pyroomacoustics.bss.auxiva
- Corrects a bug that causes different behavior whether sources are provided to the constructor of
Room
or to theadd_source
method - Corrects a typo in
pyroomacoustics.SoundSource.add_signal
- Corrects a bug in the update of the demixing matrix in
pyroomacoustics.bss.auxiva
- Corrects invalid memory access in the
pyroomacoustics.build_rir
cython accelerator and adds a unit test that checks the cython code output is correct - Fix bad handling of 1D b vectors in
`pyroomacoustics.levinson
.
0.1.20 - 2018-10-04
- STFT tutorial and demo notebook.
- New algorithm for blind source separation (BSS): Independent Low-Rank Matrix Analysis (ILRMA)
- Matplotlib is not a hard requirement anymore. When matplotlib is not installed, only a warning is issued on plotting commands. This is useful to run pyroomacoustics on headless servers that might not have matplotlib installed
- Removed dependencies on
joblib
andrequests
packages - Apply
matplotlib.pyplot.tight_layout
inpyroomacoustics.Room.plot_rir
- Monaural signals are now properly handled in one-shot stft/istft
- Corrected check of size of absorption coefficients list in
Room.from_corners
0.1.19 - 2018-09-24
- Added noise reduction sub-package
denoise
with spectral subtraction class and example. - Renamed
realtime
totransform
and added deprecation warning. - Added a cython function to efficiently compute the fractional delays in the room impulse response from time delays and attenuations
- notebooks folder.
- Demo IPython notebook (with WAV files) of several features of the package.
- Wrapper for Google's Speech Command Dataset and an example usage script in
examples
. - Lots of new features in the
pyroomacoustics.realtime
subpackage- The
STFT
class can now be used both for frame-by-frame processing or for bulk processing - The functionality will replace the methods
pyroomacoustics.stft
,pyroomacoustics.istft
,pyroomacoustics.overlap_add
, etc, - The new function
pyroomacoustics.realtime.compute_synthesis_window
computes the optimal synthesis window given an analysis window and the frame shift - Extensive tests for the
pyroomacoustics.realtime
module - Convenience functions
pyroomacoustics.realtime.analysis
andpyroomacoustics.realtime.synthesis
with an interface similar topyroomacoustics.stft
andpyroomacoustics.istft
(which are now deprecated and will disappear soon) - The ordering of axis in the output from bulk STFT is now
(n_frames, n_frequencies, n_channels)
- Support for Intel's
mkl_fft
package axis
(along which to perform DFT) andbits
parameters forDFT
class.
- The
- Improved documentation and docstrings
- Using now the built-in RIR generator in examples/doa_algorithms.py
- Improved the download/uncompress function for large datasets
- Dusted the code for plotting on the sphere in
pyroomacoustics.doa.grid.GridSphere
- The methods
pyroomacoustics.stft
,pyroomacoustics.istft
,pyroomacoustics.overlap_add
, etc, are now deprecated and will be removed in the near future
0.1.18 - 2018-04-24
- Added AuxIVA (independent vector analysis) to
bss
subpackage. - Added BSS IVA example
- Moved Trinicon blind source separation algorithm to
bss
subpackage.
- Correct a bug that causes 1st order sources to be generated for max_order==0 in pure python code
0.1.17 - 2018-03-23
- Fixed issue #22 on github. Added INCREF before returning Py_None in C extension.
0.1.16 - 2018-03-06
- Base classes for Dataset and Sample in
pyroomacoustics.datasets
- Methods to filter datasets according to the metadata of samples
- Deprecation warning for the TimitCorpus interface
- Add list of speakers and sentences from CMU ARCTIC
- CMUArcticDatabase basedir is now the top directory where CMU_ARCTIC database should be saved. Not the directory above as it previously was.
- Libroom C extension is now a proper package. It can be imported.
- Libroom C extension now compiles on windows with python>=3.5.
0.1.15 - 2018-02-23
- Added
pyroomacoustics.datasets
to list of sub-packages insetup.py
0.1.14 - 2018-02-20
- Changelog
- CMU ARCTIC corpus wrapper in
pyroomacoustics.datasets
- Moved TIMIT corpus wrapper from
pyroomacoustics.recognition
module to sub-packagepyroomacoustics.datasets.timit