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 或 torch.Tensor, 可选) – 墙体材料的吸声系数。(默认值:
0.0
)。如果类型为float
,则所有墙壁和所有频率的吸声系数相同。如果absorption
是一个 1D 张量,则形状必须为 (6,),分别表示"west"
、"east"
、"south"
、"north"
、"floor"
和"ceiling"
的吸声系数。如果absorption
是一个 2D 张量,则形状必须为 (num_bands, 6)。num_bands
是频带的数量(通常为 7)。散射系数 (浮点数 或 torch.Tensor, 可选) – 壁面材料的散射系数。(默认值:
0.0
)此参数的形状和类型与absorption
相同。麦克风半径 (浮点数, 可选) – 麦克风的半径,单位为米。(默认值:0.5)
声速 (浮点数, 可选) – 声速,单位为米每秒。(默认值:
343.0
)能量阈值 (浮点数, 可选) – 我们停止追踪射线的能量水平。(默认值:
1e-7
)每条射线的初始能量为2 / num_rays
。时间阈值 (浮点数, 可选) – 射线追踪的最大持续时间。(单位:秒)(默认值:10.0)
直方图bin大小 (浮点数, 可选) – 输出直方图中每个bin的大小。(单位:秒)(默认值:0.004)
- 返回:
- 记录追踪射线能量的3D直方图。
每个bin对应一个给定的时间段。形状为(通道数, 频段数, bin数),其中
bin数 = ceil(time_thres / hist_bin_size)
。如果absorption
和scattering
都是浮点数,则频段数 == 1
。
- 返回类型: