torchaudio.prototype.functional.ray_tracing¶
- torchaudio.prototype.functional.ray_tracing(room: Tensor, source: Tensor, mic_array: Tensor, num_rays: int, absorption: Union[float, Tensor] = 0.0, scattering: Union[float, Tensor] = 0.0, mic_radius: float = 0.5, sound_speed: float = 343.0, energy_thres: float = 1e-07, time_thres: float = 10.0, hist_bin_size: float = 0.004) Tensor[source]¶
通过射线追踪计算能量直方图。
该实现基于 pyroomacoustics [Scheibler 等人,2018]。
从声源向所有方向均匀投射
num_rays条射线;当射线与墙壁相交时,它会被反射,并且其部分能量被吸收。它还会根据scattering系数进行散射(直接发送到麦克风)。当射线靠近麦克风时,其当前能量会被记录到对应时间段的输出直方图中。- 参数:
room (torch.Tensor) – 房间坐标。 room 的形状必须是 (3,),表示房间的三维尺寸。
source (torch.Tensor) – 声源坐标。维度为 (3,) 的张量。
mic_array (torch.Tensor) – 麦克风坐标。维度为 (channel, 3) 的张量。
absorption (float or torch.Tensor, optional) – 墙体材料的吸收系数。(默认值:
0.0)。如果类型是float,则吸收系数对所有墙壁和所有频率都相同。如果absorption是 1D Tensor,形状必须是 (6,),分别表示"west","east","south","north","floor", 和"ceiling"的吸收系数。如果absorption是 2D Tensor,形状必须是 (num_bands, 6)。num_bands是频带的数量(通常为 7)。scattering (float or torch.Tensor, optional) – 墙体材料的散射系数。(默认值:
0.0) 此参数的形状和类型与absorption相同。mic_radius (float, optional) – 麦克风的半径,单位米。(默认值: 0.5)
sound_speed (float, optional) – 声速,单位米/秒。(默认值:
343.0)energy_thres (float, optional) – 停止追踪射线的能量阈值。(默认值:
1e-7)。每条射线的初始能量是2 / num_rays。time_thres (float, optional) – 射线追踪的最大持续时间。(单位: 秒)。(默认值: 10.0)
hist_bin_size (float, optional) – 输出直方图中每个 bin 的大小。(单位: 秒)。(默认值: 0.004)
- 返回:
- 追踪到的射线能量记录的 3D 直方图。
每个 bin 对应一个给定的时间段。形状为 (channel, num_bands, num_bins),其中
num_bins = ceil(time_thres / hist_bin_size)。如果absorption和scattering都是 float 类型,则num_bands == 1。
- 返回类型: