Room Impulse Response extraction package.
Project description
SCENE-RIR
The purpose of this package is to extract the Room Impulse Response (RIR) from the recorded response signal of an appropriate excitation signal. It employs the swept-sine measurement method [1]. Both linear sweeps—corresponding to a white spectrum noise—and exponential sweeps—corresponding to a pink spectrum noise—are implemented. The exponential swept-sine generation is based on Angelo Farina's methodology [2].
It is part of the Audio Simulation Module, developed for the Horizon Europe project SCENE (2023-2025): "Searchable multi-dimensional data lakes, supporting Cognive film production & distribution, for the promotion of the EuropeaN Cultural HeritagE."
Copyright (C) 2025 Christos Sevastiadis
📦 Installation
Install via PyPI
You can install this package from PyPI using pip:
pip install scene-rir
Install via Conda
To install this package using conda, make sure you have either Miniconda or Anaconda installed.
Then, run the following command:
conda install -c csevast scene-rir
✅ Installation verification
To check if the package was installed successfully, try:
python -c "import scene_rir.rir; help(scene_rir.rir)
If the scene-rir is installed, this command will print all of its help documentation string.
💻 Examples of usage
Create and save the default exponential swept-sine excitation signal.
from scene_rir import rir
signal = rir.SweptSineSignal()
signal.save("output/ss-signal-44100_kHz-2972_ms.wav")
Usage example of creating and using a swept-sine signal in a Python script.
from matplotlib import pyplot as plt
from scene_rir import rir
params = {
"antslcdur": 0.1,
"frqstp": 10000,
"frqstt": 100,
"pstslcdur": 0.1,
"sgllvl": -6,
"sglszeidx": 2,
"smprteidx": 5,
"ss_rtetyp": "log",
}
signal = rir.SweptSineSignal(params)
_, sglvec = signal.signal_vector()
tmevec = signal.time_vector()
sgldur = signal.sgldur
_, ax = plt.subplots()
ax.plot(tmevec, sglvec)
ax.set_xlim(0, sgldur)
ax.set_ylim(-1, 1)
plt.show()
Exctract the room impulse response from a recorded response signal to a previously produced swept-sine excitation signal.
from scene_rir import rir
params = {
"rec_path": "input/rec-signal.wav",
"ref_path": "output/ref-signal.wav",
"sgllvl": 0,
}
irs_signal = rir.ImpulseResponseSignal(params)
irs_signal.save("output/irs-signal.wav")
Usage example of extracting the impulse response in a Python script.
import numpy as np
from matplotlib import pyplot as plt
from scene_rir import rir
par = {
"rec_path": "input/rec-signal.wav",
"ref_path": "output/ref-signal.wav",
"path": "output/irs-signal.wav",
"sgllvl": 0,
}
irs_signal = rir.ImpulseResponseSignal(par)
smprte, sglvec = irs_signal.signal_vector()
_, ax = plt.subplots()
sgldur = sglvec.size / smprte
tmevec = np.linspace(0, sgldur, sglvec.size)
ax.plot(tmevec, sglvec)
ax.set_xlim(0, sgldur)
plt.show()
Example of usage from command line (Windows OS):
> python -m scene_rir.rir
Usage: python -m scene_rir.rir [command] [parameter1] [parameter2]
or
python3 -m scene_rir.rir [command] [parameter1] [parameter2]
Available commands:
save Save the default swept-sine signal.
> python -m scene_rir.rir --help
Usage: python -m scene_rir.rir [command] [parameter1] [parameter2]
or
python3 -m scene_rir.rir [command] [parameter1] [parameter2]
Available commands:
save Save the default swept-sine signal.
> python -m scene_rir.rir save my_folder/my_signal.wav
⚖️ License: GNU GPL v3.0
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
📖 References
- [1]: International Organization for Standardization (2006). Acoustics — Application of new measurement methods in building and room acoustics (ISO Standard No. 18233). Retrieved from https://www.iso.org/standard/40408.html.
- [2]: Farina, A. (2000, February). Simultaneous measurement of impulse response and distortion with a swept-sine technique. In Audio Engineering Society Convention 108. Audio Engineering Society.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scene_rir-2025.10.tar.gz.
File metadata
- Download URL: scene_rir-2025.10.tar.gz
- Upload date:
- Size: 3.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33c37c5ead71d7249ef0de3028d26f6efef4023ee3a81fbbd1a7d00fe9ee5dce
|
|
| MD5 |
37ad6d77702cdce1c5aa54d9698d4d9e
|
|
| BLAKE2b-256 |
9ec60d110ef51b807f1720a68ed8b29e6604964aaaf9ee2ec25f0922cc06cd97
|
File details
Details for the file scene_rir-2025.10-py3-none-any.whl.
File metadata
- Download URL: scene_rir-2025.10-py3-none-any.whl
- Upload date:
- Size: 23.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
347c8695de7ddc3fdfb26b7915c7a153406d9675d56f65b29b1a7da53dcbdcbf
|
|
| MD5 |
23fce35d27668aebf1157ffd6480a61c
|
|
| BLAKE2b-256 |
31d75beb99dee9c3022c0d70e97e4427fe9b24f5a7b3dba0593820038eef8fc6
|