Skip to main content

PyTorch-based room impulse response (RIR) simulation toolkit for static and dynamic scenes.

Project description

TorchRIR

PyTorch-based room impulse response (RIR) simulation toolkit focused on a clean, modern API with GPU support. This project has been substantially assisted by AI using Codex.

[!WARNING] TorchRIR is under active development and may contain bugs or breaking changes. Please validate results for your use case. If you find bugs or have feature requests, please open an issue. Contributions are welcome.

Installation

pip install torchrir

Examples

  • examples/static.py: fixed sources/mics with binaural output.
    uv run python examples/static.py --plot
  • examples/dynamic_src.py: moving sources, fixed mics.
    uv run python examples/dynamic_src.py --plot
  • examples/dynamic_mic.py: fixed sources, moving mics.
    uv run python examples/dynamic_mic.py --plot
  • examples/cli.py: unified CLI for static/dynamic scenes, JSON/YAML configs.
    uv run python examples/cli.py --mode static --plot
  • examples/cmu_arctic_dynamic_dataset.py: small dynamic dataset generator (fixed room/mics, randomized source motion).
    uv run python examples/cmu_arctic_dynamic_dataset.py --num-scenes 4 --num-sources 2
  • examples/benchmark_device.py: CPU/GPU benchmark for RIR simulation.
    uv run python examples/benchmark_device.py --dynamic

Core API Overview

  • Geometry: Room, Source, MicrophoneArray
  • Static RIR: torchrir.sim.simulate_rir
  • Dynamic RIR: torchrir.sim.simulate_dynamic_rir
  • Dynamic convolution: torchrir.signal.DynamicConvolver
  • Metadata export: torchrir.io.build_metadata, torchrir.io.save_metadata_json

Module Layout (for contributors)

  • torchrir.sim: simulation backends (ISM implementation lives under torchrir.sim.ism)
  • torchrir.signal: convolution utilities and dynamic convolver
  • torchrir.geometry: array geometries, sampling, trajectories
  • torchrir.viz: plotting and animation helpers
  • torchrir.models: room/scene/result data models
  • torchrir.io: audio I/O and metadata serialization (wav-only load/save/info with backend selection)
  • torchrir.util: shared math/tensor/device helpers
  • torchrir.logging: logging utilities
  • torchrir.config: simulation configuration objects
from torchrir import MicrophoneArray, Room, Source
from torchrir.sim import simulate_rir
from torchrir.signal import DynamicConvolver

room = Room.shoebox(size=[6.0, 4.0, 3.0], fs=16000, beta=[0.9] * 6)
sources = Source.from_positions([[1.0, 2.0, 1.5]])
mics = MicrophoneArray.from_positions([[2.0, 2.0, 1.5]])

rir = simulate_rir(room=room, sources=sources, mics=mics, max_order=6, tmax=0.3)
# For dynamic scenes, compute rirs with torchrir.sim.simulate_dynamic_rir and convolve:
# y = DynamicConvolver(mode="trajectory").convolve(signal, rirs)

For detailed documentation, see the docs under docs/ and Read the Docs.

Future Work

  • Ray tracing backend: implement torchrir.experimental.RayTracingSimulator with frequency-dependent absorption/scattering.
  • CUDA-native acceleration: introduce dedicated CUDA kernels for large-scale RIR generation.
  • Dataset expansion: add additional dataset integrations beyond CMU ARCTIC (see torchrir.experimental.TemplateDataset), including torchaudio datasets (e.g., LibriSpeech, VCTK, LibriTTS, SpeechCommands, CommonVoice, GTZAN, MUSDB-HQ).
  • Add regression tests comparing generated RIRs against gpuRIR outputs.

Related Libraries

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torchrir-0.4.1.tar.gz (47.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

torchrir-0.4.1-py3-none-any.whl (61.0 kB view details)

Uploaded Python 3

File details

Details for the file torchrir-0.4.1.tar.gz.

File metadata

  • Download URL: torchrir-0.4.1.tar.gz
  • Upload date:
  • Size: 47.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for torchrir-0.4.1.tar.gz
Algorithm Hash digest
SHA256 b28f92bd9c4d9eb475f1858f8a4776d7c2a1a63172bb3d78531ce1bab1ceda2b
MD5 e20bb739a25e857efd38a3ccd60dfc37
BLAKE2b-256 ad40258420fe27a3a71e9921b2e1b4e89eef15ffe5a9d6e826fcd1b34745f089

See more details on using hashes here.

File details

Details for the file torchrir-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: torchrir-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 61.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for torchrir-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5f0af940c0e69946281ac5ca230b6ca5eb3fea88cc01e670ff86f83c270f231b
MD5 e2e0713c5b4731d867b9afc978bd2a77
BLAKE2b-256 a49c72c7203cf62d067e69bab1e964c283ae6887ff12ce86b73e55839167e755

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page