RTFMVDR¶
- class torchaudio.transforms.RTFMVDR(*args, **kwargs)[源码]¶
基于相对传递函数 (RTF) 和噪声功率谱密度 (PSD) 矩阵的最小方差无畸变响应 (MVDR [Capon, 1969]) 模块。
给定多通道复值频谱 \(\textbf{Y}\)、目标语音的相对传递函数 (RTF) 矩阵或导向矢量 \(\bm{v}\)、噪声的 PSD 矩阵 \(\bf{\Phi}_{\textbf{NN}}\) 以及表示参考通道的 one-hot 向量 \(\bf{u}\),该模块计算增强语音的单通道复值频谱 \(\hat{\textbf{S}}\)。公式定义为
\[\hat{\textbf{S}}(f) = \textbf{w}_{\text{bf}}(f)^{\mathsf{H}} \textbf{Y}(f) \]其中 \(\textbf{w}_{\text{bf}}(f)\) 是第 \(f\) 个频率 bin 的 MVDR 波束赋形权重,\((.)^{\mathsf{H}}\) 表示 Hermitian 共轭运算。
波束赋形权重通过以下公式计算:
\[\textbf{w}_{\text{MVDR}}(f) = \frac{{{\bf{\Phi}_{\textbf{NN}}^{-1}}(f){\bm{v}}(f)}} {{\bm{v}^{\mathsf{H}}}(f){\bf{\Phi}_{\textbf{NN}}^{-1}}(f){\bm{v}}(f)} \]- 使用
RTFMVDR
的教程
- forward(specgram: Tensor, rtf: Tensor, psd_n: Tensor, reference_channel: Union[int, Tensor], diagonal_loading: bool = True, diag_eps: float = 1e-07, eps: float = 1e-08) Tensor [源码]¶
- 参数:
specgram (torch.Tensor) – 多通道复值频谱。维度为 (…, channel, freq, time) 的 Tensor。
rtf (torch.Tensor) – 目标语音的复值 RTF 向量。维度为 (…, freq, channel) 的 Tensor。
psd_n (torch.Tensor) – 噪声的复值功率谱密度 (PSD) 矩阵。维度为 (…, freq, channel, channel) 的 Tensor。
reference_channel (int 或 torch.Tensor) – 指定参考通道。如果数据类型是
int
,则表示参考通道索引。如果数据类型是torch.Tensor
,其形状为 (…, channel),其中channel
维度是 one-hot。diagonal_loading (bool, 可选) – 如果为
True
,则对psd_n
应用对角加载。 (默认值:True
)diag_eps (float, 可选) – 对角加载时乘以单位矩阵的系数。仅在
diagonal_loading
设置为True
时有效。 (默认值:1e-7
)eps (float, 可选) – 添加到波束赋形权重公式分母中的值。 (默认值:
1e-8
)
- 返回值:
单通道复值增强频谱,维度为 (…, freq, time)。
- 返回类型:
- 使用