torchaudio.prototype.functional.simulate_rir_ism¶
- torchaudio.prototype.functional.simulate_rir_ism(room: Tensor, source: Tensor, mic_array: Tensor, max_order: int, absorption: Union[float, Tensor], output_length: Optional[int] = None, delay_filter_length: int = 81, center_frequency: Optional[Tensor] = None, sound_speed: float = 343.0, sample_rate: float = 16000.0) Tensor[原始碼]¶
基於映象源法 [Allen and Berkley, 1979] 計算房間脈衝響應 (RIR)。該實現基於 pyroomacoustics [Scheibler 等, 2018]。
- 引數:
room (torch.Tensor) – 房間座標。room 的形狀必須是 (3,),表示房間的三個維度。
source (torch.Tensor) – 聲源座標。維度為 (3,) 的 Tensor。
mic_array (torch.Tensor) – 麥克風座標。維度為 (channel, 3) 的 Tensor。
max_order (int) – 聲源的最大反射次數。
absorption (float 或 torch.Tensor) – 牆壁材料對聲能的吸收 [Wikipedia contributors, n.d.] 係數。如果 dtype 為
float,則所有牆壁和所有頻率的吸收係數相同。如果absorption是一個 1D Tensor,其形狀必須為 (6,),其中值分別表示"west"、"east"、"south"、"north"、"floor"和"ceiling"的吸收係數。如果absorption是一個 2D Tensor,其形狀必須為 (7, 6),其中 7 表示倍頻帶的數量。output_length (int 或 None, 可選) –
模擬 RIR 訊號的輸出長度。如果為
None,則長度定義為\[\frac{\text{max\_d} \cdot \text{sample\_rate}}{\text{sound\_speed}} + \text{delay\_filter\_length} \]其中
max_d是映象源和麥克風之間的最大距離。delay_filter_length (int, 可選) – 計算 sinc 函式的濾波器長度。(預設值:
81)center_frequency (torch.Tensor, 可選) – 多頻帶牆壁的倍頻帶中心頻率。僅當
absorption為 2D Tensor 時使用。sound_speed (float, 可選) – 聲速。(預設值:
343.0)sample_rate (float, 可選) – 生成的房間脈衝響應訊號的取樣率。(預設值:
16000.0)
- 返回:
模擬的房間脈衝響應波形。維度為 (channel, rir_length) 的 Tensor。
- 返回型別:
注意
如果
absorption是 2D Tensor 並且center_frequency設定為None,則倍頻帶的中心頻率固定為[125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0]。使用者需要將absorption的值調整到相應的頻率。