首页 > 其他分享 >AEC论文解读 -- ACOUSTIC ECHO CANCELLATION WITH THE DUAL-SIGNAL TRANSFORMATION LSTM NETWORK

AEC论文解读 -- ACOUSTIC ECHO CANCELLATION WITH THE DUAL-SIGNAL TRANSFORMATION LSTM NETWORK

时间:2024-12-04 17:31:41浏览次数:11  
标签:NETWORK -- 模型 语音 回声 信号 归一化 TRANSFORMATION 近端

程序地址
预训练模型

一、技术解读

1.1 信号处理

1.1.1 数据集来源

  • 合成数据集:包含 10,000 个示例,涵盖单工、双工、近端噪声、远端噪声和非线性失真情况。
  • 真实录音数据集:包含不同环境中的录音,确保多样性。前 500 个示例用于工具评估,称为“双工测试集”。
  • 训练时仅使用远端信号和回声信号,并将其切割成 4 秒的块。
  • 通过语音增强模型处理每个文件,估计语音和噪声信号,信噪比低于 5 dB 的文件被丢弃。最终创建了一个 120 小时的多语言语音数据集,并添加了来自 MUSAN 语料库的器乐音乐。

1.1.2 短时傅里叶变换(STFT)

  • 利用STFT将时域信号转换为时频域信号,STFT的窗函数长度为32ms,帧移为8ms,FFT大小为512。

1.1.3 信号增强和数据增强

  • 添加噪声:在训练数据中随机添加背景噪声,以模拟真实环境中的噪声条件。
  • 信号延迟:对远端信号进行随机延迟,以模拟传输延迟。
  • 频谱整形:对音频信号应用随机的频谱整形,以增加模型对不同频率特征的适应能力。
  • 卷积处理:将远端信号与随机选择的脉冲响应(IR)进行卷积,以模拟不同的声学环境。

1.2 模型架构

1.2.1 输入层

  • 输入层定义为 Input(batch_shape=(None, None)),这意味着模型可以接受任意长度的输入序列,输入信号是时间域的音频信号。可变序列的好处在于,它提供了灵活性,使模型能够处理不同长度的输入数据,这在实际应用中非常重要。模型能够适应不同的输入条件,增强其泛化能力,
  • 在 TensorFlow 中,可以使用 tf.kerasInput 层来定义可变长度的输入。在 PyTorch 中,可以使用 torch.nn 模块来构建支持可变输入长度的模型。假设训练数据的维度是 (64, 16, 257),推理数据的维度是 (4, 16, 257)。代码分别如下。
import tensorflow as tf
from tensorflow.keras.layers import Input, LSTM, Dense
from tensorflow.keras.models import Model
def create_model():
    input_layer = Input(shape=(None, 257))  # None 表示时间步长可以是任意值,257 是特征数
    lstm_out = LSTM(64)(input_layer)  # LSTM 层
    output_layer = Dense(1)(lstm_out)  # 输出层
    model = Model(inputs=input_layer, outputs=output_layer)
    return model
model = create_model()
train_input_data = tf.random.normal((64, 16, 257))
infer_input_data = tf.random.normal((4, 16, 257))
model.fit(train_input_data, tf.random.normal((64, 1)), epochs=1)
output = model(infer_input_data)
print("Output shape:", output.shape)
import torch
import torch.nn as nn
class VariableLengthModel(nn.Module):
    def __init__(self):
        super(VariableLengthModel, self).__init__()
        self.lstm = nn.LSTM(input_size=257, hidden_size=64, batch_first=True)
        self.fc = nn.Linear(64, 1)
    def forward(self, x):
        lstm_out, _ = self.lstm(x)  # LSTM 输出
        output = self.fc(lstm_out[:, -1, :])  # 取最后一个时间步的输出
        return output
model = VariableLengthModel()
train_input_data = torch.randn(64, 16, 257)
infer_input_data = torch.randn(4, 16, 257)
model.train()
output_train = model(train_input_data)
# 进行推理
model.eval()
output_infer = model(infer_input_data)
print("Output shape:", output_infer.shape)

1.2.2 STFT 计算

  • 使用 Lambda 层计算短时傅里叶变换(STFT),将时间域信号转换为时频域表示。输出包括:
    • 幅度(Magnitude):表示信号的强度,是模型处理的主要信息。
    • 相位(Phase):表示信号的相位信息,在信号重建过程中使用。

1.2.3 特征归一化

  • 对 STFT 的幅度进行归一化处理,以提高模型对不同音量变化的鲁棒性。在 DTLN 模型中,对短时傅里叶变换(STFT)幅度进行归一化处理,以增强模型对不同音量变化的适应能力。
  • 即时层归一化是一种归一化技术,旨在对每个输入样本的特征进行独立归一化。与标准层归一化不同,即时层归一化不依赖于整个批次的统计信息,而是对每个样本的特征进行单独处理。这使得它在处理变长序列时更加灵活,尤其适用于音频信号等时序数据。
  • 即时层归一化的计算过程可以用以下公式表示:
  1. 计算均值和方差

    • 对于输入张量 x x x 的第 i i i个样本,计算其均值和方差:
      μ i = 1 H ∑ j = 1 H x i j \mu_i = \frac{1}{H} \sum_{j=1}^{H} x_{ij} μi​=H1​j=1∑H​xij​
      σ i 2 = 1 H ∑ j = 1 H ( x i j − μ i ) 2 \sigma_i^2 = \frac{1}{H} \sum_{j=1}^{H} (x_{ij} - \mu_i)^2 σi2​=H1​j=1∑H​(xij​−μi​)2
      其中 H H H是特征的维度。
  2. 归一化

    • 使用均值和方差对输入进行归一化:
      x ^ i j = x i j − μ i σ i 2 + ϵ \hat{x}_{ij} = \frac{x_{ij} - \mu_i}{\sqrt{\sigma_i^2 + \epsilon}} x^ij​=σi2​+ϵ ​xij​−μi​​
      其中 ϵ \epsilon ϵ是一个小常数,用于防止除以零。
  3. 缩放和偏移

    • 最后,通过可学习的参数 γ \gamma γ和 β \beta β对归一化后的输出进行缩放和偏移:
      y i j = γ x ^ i j + β y_{ij} = \gamma \hat{x}_{ij} + \beta yij​=γx^ij​+β
import torch
import torch.nn as nn

class InstantLayerNormalization(nn.Module):
    def __init__(self, num_features, epsilon=1e-7):
        super(InstantLayerNormalization, self).__init__()
        self.epsilon = epsilon
        self.gamma = nn.Parameter(torch.ones(num_features))  # 可学习的缩放参数
        self.beta = nn.Parameter(torch.zeros(num_features))   # 可学习的偏移参数

    def forward(self, x):
        # 计算均值和方差
        mean = x.mean(dim=-1, keepdim=True)
        variance = x.var(dim=-1, keepdim=True, unbiased=False)
        
        # 归一化
        x_normalized = (x - mean) / torch.sqrt(variance + self.epsilon)
        
        # 缩放和偏移
        return self.gamma * x_normalized + self.beta

# 使用示例
input_tensor = torch.randn(64, 16, 257)  # 假设输入的形状为 (batch_size, seq_length, num_features)
layer_norm = InstantLayerNormalization(num_features=257)
output_tensor = layer_norm(input_tensor)

1.2.4 分离核心

在 DTLN(双信号变换 LSTM 网络)模型中,分离核心是其关键组成部分,主要用于处理时频特征并预测掩码,以实现声学回声消除(AEC)任务。该模型包含两个分离核心,每个核心都使用 LSTM 层来捕捉时间序列中的长期依赖关系,并通过全连接层生成掩码。

第一个分离核心

第一个分离核心的输入是近端和远端麦克风信号的归一化对数功率谱。具体步骤如下:

  1. 输入处理:将近端和远端信号的幅度 STFT 进行归一化处理,以消除不同音量水平对模型的影响。这里使用即时层归一化(Instant Layer Normalization),该方法对每个输入样本的特征进行独立归一化,确保模型在处理变长序列时的灵活性。
  2. LSTM 层:使用多个 LSTM 层来处理这些时频特征。LSTM 层能够捕捉输入序列中的时间依赖性,学习信号的动态变化。
  3. 掩码预测:通过全连接层和激活函数(如 Sigmoid)生成时频掩码。这个掩码用于增强信号,帮助模型更好地分离目标信号和噪声。
  4. 信号重建:在生成掩码后,模型将其应用于未归一化的近端麦克风信号的幅度 STFT。通过使用原始近端麦克风信号的相位信息,模型能够通过逆傅里叶变换(IFFT)将增强的幅度信号转换回时间域。
第二个分离核心

第二个分离核心的设计旨在进一步提取和增强特征,具体步骤如下:

  1. 特征编码:第一个核心的输出通过卷积层(Conv1D)进行编码,以提取更高层次的特征。这一步骤有助于捕捉信号中的复杂模式。
  2. 再次归一化:对编码后的特征进行归一化处理,以确保输入到 LSTM 层的特征具有一致的分布。
  3. LSTM 层:使用 LSTM 层预测第二个掩码。这个掩码同样用于增强信号,进一步提高模型的分离能力。
  4. 特征重建:将第二个掩码应用于编码后的特征,生成增强的特征表示。最终,这些增强的特征通过逆傅里叶变换转换回时间域信号。

对于回声消除任务,模型选择了 32 毫秒的帧长和 8 毫秒的帧移,FFT 大小为 512,学习到的特征表示的大小也是 512。每层选择了 512 个 LSTM 单元,以应对从语音中去除噪声的挑战。模型的参数总数为 10.3M。此外,还训练了每层有 128 和 256 个单元的模型,以探索模型性能如何随着大小而变化。

1.2.5 信号重建

  • 使用 ifftLayer 方法将增强的幅度和相位信息转换回时间域信号。使用 overlapAddLayer 方法将重建的帧信号合并为连续的时间域信号,生成最终的输出信号。

1.2.6 模型编译

  • 使用信噪比(SNR)作为损失函数,计算模型输出与真实信号之间的损失。使用 Adam 优化器进行模型训练,设置学习率和梯度裁剪。


在这里插入图片描述

1.3 DTLN 模型的回声消除与降噪能力

DTLN(双信号变换 LSTM 网络)模型能够同时实现回声消除和降噪效果。

1.3.1 回声消除

DTLN 模型的输入信号包括近端麦克风信号(通常包含语音和回声)和远端麦克风信号(通常是清晰的语音信号)。通过对这两个信号的处理,模型能够学习到如何从近端信号中去除回声成分。模型的第一个分离核心通过 LSTM 层处理时频特征,并生成一个时频掩码。这个掩码用于增强信号,帮助模型更好地分离目标信号(近端语音)和回声信号。

1.3.2 降噪效果

在降噪方面,DTLN 模型在训练过程中不仅处理回声信号,还会接触到各种噪声条件。通过数据增强技术,模型在训练时会随机添加背景噪声,从而提高其对噪声的鲁棒性。第二个分离核心使用卷积层对第一个核心的输出进行编码,并再次预测掩码。这一过程有助于进一步提取和增强特征,从而有效地去除噪声成分。

1.3.3 数据集和训练

DTLN 模型使用了包含多种噪声和回声场景的数据集进行训练。这种多样化的训练数据使得模型能够学习到在不同条件下的信号特征,从而提高其在实际应用中的表现。此外,论文中提到的盲测集包含干净和嘈杂的子集,模型在这些数据上的表现进一步验证了其降噪和回声消除的能力。

1.3.4 实验结果

根据论文中的实验结果,DTLN 模型在回声消除和降噪任务上都表现出色,能够有效减少声学回声和额外的噪声。模型在平均意见得分(MOS)方面的提升表明其在实际应用中的有效性。

二、全文翻译:声学回声消除与双信号变换LSTM网络

2.0 摘要

  本文将双信号变换LSTM网络(DTLN)应用于实时声学回声消除(AEC)任务。DTLN结合了短时傅里叶变换和学习到的特征表示,在堆叠网络方法中实现,这使得在时频域和时域(包括相位信息)中都能进行鲁棒的信息处理。模型仅在60小时的真实和合成回声场景上进行训练。训练设置包括多语言语音、数据增强、额外的噪声和混响,以创建一个能够很好地泛化到各种真实世界条件的模型。DTLN方法在干净和嘈杂的回声条件下都产生了最先进的性能,减少了声学回声和额外的噪声。该方法在平均意见得分(MOS)方面比AEC-Challenge基线提高了0.30。

2.1 引言

  声学回声可能在音频/视频通话中出现,如果扬声器的声音被近端扬声器回放并被近端麦克风捕获。听到自己声音的回声效果可能会非常烦人,增加听音努力,并且是语音研究中的一个紧迫话题——特别是在远程可靠通信解决方案日益重要的情况下。取消回声的标准方法是通过自适应滤波器(如归一化最小均方(NLMS))估计从扬声器到麦克风的脉冲响应,并用估计的脉冲响应过滤远端信号。这个估计的信号从近端麦克风信号中减去。这种方法在只有远端信号存在且麦克风没有记录到近端语音时效果最佳。在远端和近端语音都存在的情况下,也称为双工场景,滤波器将无法正确适应或发散。在这种情况下,通常使用双工检测器来暂停适应。
  最近,深度学习和神经网络已被应用于声学回声消除,并取得了令人信服的结果。几种方法将神经网络和自适应滤波器结合在混合系统中。从深度学习的角度来看,AEC任务可以被视为语音或音频源分离问题。语音分离领域近年来迅速进展。然而,用于扬声器分离的模型通常集中在序列处理上,而不是因果实时处理。因为高延迟是不可取的,并且会增加语音通信的负担,所以需要能够基于帧进行实时处理的系统。
  循环神经网络(RNN),如门控循环单元(GRU)或长短期记忆(LSTM)网络,通常用于具有实时能力的模型。由于它们的单元结构带有门和状态,LSTM和GRU可以按帧基础上对时间序列进行建模,正如语音信号所要求的。RNN已经被应用于AEC问题。
  2020年Interspeech的深度噪声抑制挑战赛表明,可以应用各种架构来实时信号增强。为了解决AEC这一类似相关的话题,提出了AEC挑战赛,其目的是提供一套共同的训练数据和基于ITU P.808框架的客观评估,以比较各种方法。在本文中,双信号变换LSTM网络被适应于实时回声消除(DTLN-aec)。原始的DTLN模型被证明在无回声、混响和真实生活环境测试集上对降低噪声是有益和鲁棒的。它结合了短时傅里叶变换(STFT)和基于1D-Conv层学习到的特征表示,在堆叠网络方法中。该模型基于时频(TF)域和学习到的特征域中的比率掩蔽。由于这种设计选择,它可以利用来自STFT幅度和学习到的特征表示的信息。由于不清楚这种方法是否对AEC有益,我们在这种情况下应用模型,旨在构建一个简单的基于RNN的端到端AEC系统,该系统可以轻松集成到常见的信号处理链中。
  对于这种新应用,原始模型通过将远端信号作为额外信息输入到每个模型块中进行了扩展。这种扩展与[3]中进行的程序类似,重要的不同之处在于我们使用的是因果LSTM而不是无因果BLSTM。最近的出版物表明,一个精心选择的训练设置和数据增强对于实现高语音质量的语音增强至关重要。因此,本研究追求的第二个目标是通过广泛的数据增强来增加AEC鲁棒性,以覆盖混响和多语言语音。

2.2 方法

2.2.1 问题表述

  对于声学回声消除系统,通常有两个输入信号可用,即麦克风信号 y ( n ) y(n) y(n)和远端麦克风信号 x ( n ) x(n) x(n)。近端麦克风信号可以被描述为如下组合的信号:
在这里插入图片描述

y ( n ) = s ( n ) + v ( n ) + d ( n ) y(n) = s(n) + v(n) + d(n) y(n)=s(n)+v(n)+d(n)
  其中 s ( n ) s(n) s(n)是近端语音信号, v ( n ) v(n) v(n) 是可能的近端噪声信号, d ( n ) d(n) d(n)对应于回声信号,它是远端麦克风信号 x ( n ) x(n) x(n)与传输路径的脉冲响应 h ( n ) h(n) h(n)的卷积。传输路径是音频设备缓冲造成的系统延迟、扬声器与放大器的特性以及近端扬声器与近端麦克风之间的传递函数的组合。声学回声场景如图1所示。期望信号是近端语音信号 s ( n ) s(n) s(n),而所有其他信号部分都应被移除。这项任务是一个音频源分离任务。如果只存在远端和噪声信号,则期望信号是静音。

2.2.2 适应AEC的DTLN模型

  在2020年Interspeech的DNS-Challenge中,开发了双信号变换LSTM网络(DTLN)以减少噪声语音混合中的噪声。DTLN方法被适应于AEC任务(DTLN-aec1),如下所述。网络由两个分离核心组成。每个分离核心都有两个LSTM层和一个带有sigmoid激活的全连接层,用于预测掩码。第一个分离核心由近端和远端麦克风信号的归一化对数功率谱串联输入。每个麦克风信号都通过即时层归一化(iLN)单独归一化,以考虑水平变化。即时层归一化与标准层归一化类似,其中每帧单独归一化,但不会随时间累积统计信息。这个概念在文献[21]中被引入为通道级层归一化。第一个核心预测一个时频掩码,该掩码应用于未归一化的近端麦克风信号的幅度STFT。估计的幅度通过使用原始近端麦克风信号的相位,通过逆FFT转换回时域。第二个核心使用1D-Conv层创建的学习到的特征表示。这种方法受到[9, 22]的启发。核心由先前预测信号的归一化特征表示和远端麦克风信号的归一化特征表示输入。为了将两个信号转换到时域,应用相同的权重,但是iLN的归一化是单独进行的,以实现每个表示的单独缩放和偏置。第二核心预测的掩码乘以第一核心输出的未归一化特征表示。这个估计的特征表示通过1D-Conv层转换回时域。为了重建连续时间信号,使用了重叠添加过程。模型架构在图2中可视化。
  对于回声消除任务,选择了32毫秒的帧长和8毫秒的帧移。FFT大小为512,学习到的特征表示的大小也是512。由于从语音中去除语音和噪声可能相当具有挑战性,因此每层选择了512个LSTM单元,与[15]中的较小模型相比。这导致当前模型总共有10.3M个参数。此外,还训练了每层有128和256个单元的模型,以探索模型性能如何随着大小而变化。
在这里插入图片描述
  提出的DTLN-aec模型架构的说明。左侧的处理链展示了第一个分离核心使用STFT信号变换(对近端和远端麦克风信号都进行分割和FFT),而右侧的构建块表示第二个核心,它基于1D-Conv层学习到的特征变换,应用于第一个核心的输出和分割后的远端麦克风信号。

2.2.3 数据集和数据集准备

  挑战提供了两个训练数据集,一个包含合成数据,一个包含真实录音。合成数据集源自为[12]创建的数据集。数据集包括10,000个示例,包含单工、双工、近端噪声、远端噪声和各种非线性失真情况,每个示例包含远端语音、回声信号、近端语音和近端麦克风信号。前500个示例包含的数据不在任何其他测试数据集中。这个数据集将用于工具评估,被称为“双工测试集”。有关详细信息,请参见描述AEC-Challenge的论文[16]。
  对于训练,仅使用远端信号和回声信号,并将它们切成4秒的块。真实数据集包含不同的真实环境,有人类说话者和用不同设备捕获的信号。有关此数据的详细信息,请参见[16]。和之前一样,仅使用来自该数据集的远端信号和回声信号,切成4秒的块。
  对于P.808框架的评估,挑战组织者提供了一个盲测集。盲测集包含大约800个录音,分为干净和嘈杂的子集。从为[23]收集的多语言数据中选择了干净语音作为近端信号。数据集包含法语、德语、意大利语、普通话、英语、俄语和西班牙语。原始数据的各种来源在[23]中描述。由于质量差,排除了德语数据。语音信号被分割成持续时间为4秒的样本。RMS小于或等于零的样本被丢弃。RMS小于零可能是由于舍入误差造成的。
  作为排除噪声信号的额外机制,每个文件都通过[15]中提出的语音增强模型处理,通过从噪声信号中减去估计的语音信号来估计语音和噪声信号。如果信噪比低于5 dB,则丢弃语音文件。最后,从每种语言中取20小时,创建一个120小时的多语言语音数据集。为了覆盖回声场景中噪声类型的高方差,使用了[23]提供的噪声语料库。和之前一样,噪声文件被切成4秒的样本,并且每个RMS小于或等于零的样本都被丢弃。此外,还添加了来自MUSAN语料库[24]的器乐音乐(同样,在4秒分割后)。这导致大约140小时的噪声。
  最后,为了构建反映不同混响影响的真实回声场景,使用了为[25]收集的脉冲响应(IR)数据集。数据集包含来自各种来源的真实脉冲响应,如[26, 27, 28]和基于图像方法[29]的模拟脉冲响应。对于每个脉冲响应,直接路径的开始被识别并设置为位置0,如[19]所建议。

2.2.4 训练和数据增强

  所有训练样本在训练期间在线创建,不使用近端语音、远端语音和IR的固定组合。总共使用了60小时的回声场景,其中48小时用于训练,剩余的12小时用于训练验证。对于训练,使用了挑战组织者提供的所有远端和回声信号(大约32小时的数据)。为了创建额外的回声数据,使用了之前创建的多语言数据集中的28小时语音。每个语音文件都与随机选择的IR卷积,并且每个IR都除以第一个样本的绝对值。接下来,除了第一个样本外,所有样本都乘以一个从-25到0之间的均匀分布中随机取出的增益,以增强IRs。这个过程再次受到[19]的启发。在50%的情况下,添加了一个噪声样本,信噪比从平均值为5 dB、标准差为10 dB的正态分布中随机取出,以考虑嘈杂的远端信号。
  为了创建回声信号,先前创建的远端信号被延迟一个在10到100毫秒之间随机的值,以模拟处理和传输延迟。延迟的信号通过一个带通信号过滤,随机的下限截止频率在100到400赫兹之间,上限截止频率在6000到7500赫兹之间。这一步引入了额外的方差,并模拟了设备内部扬声器通常较差的声学传输特性,特别是在低频区域。回声信号最后与近端信号相同的IR卷积。由于原始挑战数据集已经涵盖了这方面,所以没有包括额外的非线性。对于近端信号,使用了多语言数据集中的60小时。每个语音文件都与随机选择的IR卷积,并且像合成远端信号一样进行随机缩放。对语音信号应用了[18]建议的随机频谱整形,以增加鲁棒性并模拟各种传输效应。在70%的情况下,以平均值为5、标准差为10的正态分布中的信噪比向近端语音添加噪声,以将重点转移到更具挑战性的嘈杂近端条件。噪声信号也独立地应用随机频谱整形。在5%的情况下,丢弃了随机持续时间的近端语音段,以考虑仅远端场景。在90%的情况下,回声信号以平均值为0 dB、标准差为10 dB的信噪比添加到近端语音中。回声信号和远端语音信号都应用了随机频谱整形。如果没有应用回声,则将远端信号设置为零或在-70到-120 dB RMS范围内的低水平噪声,并进行随机频谱整形。所有输入到模型的信号都受到一个从-25到0 dB范围内的均匀分布中随机选择的增益的影响。
  在[30]中首次提出的时域信噪比损失被选作成本函数。信噪比损失是尺度依赖的,这在实时应用中是可取的,并且因为它是在时域中计算的,所以隐含地整合了相位信息。模型使用Adam优化器进行100个周期的训练,512个LSTM单元的初始学习率为2e-4,256个单元为5e-4,128个单元为1e-3。学习率每两个周期乘以0.98。应用了值为3的梯度范数裁剪。批量大小设置为16,样本长度为4秒。在连续的LSTM层之间,引入了25%的dropout以减少过拟合。模型每个周期都用验证集进行评估。在验证集上表现最好的模型被用于测试。

2.2.5 基线系统

  挑战组织者还提供了一个基于[32]的基线。基线包括两个GRU层和一个带有sigmoid激活的全连接网络,用于预测时频掩码。模型输入的是麦克风和回环信号的串联短时对数功率谱,并预测一个频谱抑制掩码,该掩码应用于麦克风信号的STFT幅度。预测的幅度谱通过使用麦克风信号的相位,通过逆STFT转换回时域。由于基线模型在挑战中无法获取,因此额外训练了一个基线系统,以量化堆叠网络与使用时频掩码的连续LSTM层模型的性能。该模型有四个连续的LSTM层,每层有512个单元,后面是一个带有sigmoid激活的全连接部分,用于预测TF掩码。输入到模型的等于DTLN-aec模型的第一个分离核心。掩码乘以近端麦克风信号的未归一化幅度,并转换回时域。这种配置导致了一个具有8.5M参数的模型。模型与DTLN-aec模型使用相同的设置进行训练。

2.2.6 客观和主观评估

  广泛使用的评估AEC系统的PESQ和ERLE指标通常与主观评分相关性不高[16]。尽管如此,客观措施可以表明模型是否按预期执行。由于用于工具评估的数据集仅包含双工场景,并且AEC问题被视为源分离问题,因此使用SI-SDR来评估分离性能。此外,PESQ用于指示语音质量。这些措施用于比较额外的基线和不同大小的DTLN-aec模型在双工测试集上的性能。为了更好地了解实际的AEC性能,挑战组织者在Amazon Mechanical Turk平台上根据ITU P.808众包框架[17]进行了研究。总共评估了四种场景:单工近端(P.808)、单工远端(P.831[36])、双工回声(P.831)和双工其他干扰(P.831)。有关评分过程的详细信息,请参见[16]。

2.3 RESULTS

  客观和主观评估的结果分别显示在表1和表2中。
在这里插入图片描述
在这里插入图片描述

  客观结果:在所有条件下,所有模型都比未处理的条件有所改进。最大的改进观察到DTLN-aec模型有512个单元,而最小的改进是DTLN-aec模型有128个单元。基线被256和512单元的模型超越。相对于未处理条件的PESQ和SI-SDR改进在所有噪声条件下对所有模型来说相对稳定。512单元模型在所有条件下相对于未处理条件的平均SI-SDR改进是14.24 dB,平均PESQ改进是0.78 MOS。
  主观结果:除了干净的单工近端条件外,在所有条件下DTLN-aec模型都优于AEC-Challenge基线。在干净和嘈杂子集方面,平均改进在MOS方面分别是0.34和0.26。关于执行时间的结果:为了遵守AEC-Challenge的规则,一个音频帧的执行时间必须小于帧移,在我们的情况下是8毫秒。在两个CPU上使用TensorFlow Lite模型的DTLN-aec测量了512 LSTM单元每层的执行时间。我们测量的执行时间是3.06毫秒(使用双核I5-3320M在2.6 GHz CPU)和0.97毫秒(使用四核I5-6600K CPU,时钟频率为3.5 GHz),这两个都符合AEC-Challenge规则。

2.4 讨论

  比较不同大小的模型时,DTLN-aec模型似乎在参数数量方面表现良好:128单元的小模型已经在嘈杂条件下达到了很好的改进,256单元的模型以不到其一半的参数超越了基线。这也显示了使用堆叠模型与具有四个连续LSTM层的模型相比的优势。
  对于AEC任务来说,使用具有更高建模能力的模型可能是一个优势,因为它不仅要从噪声中分离语音,还要从语音中分离语音,这可能是一个更具挑战性的任务——特别是当声音具有相似特征时。对于针对特定硬件量身定制的应用,可以根据计算资源和功耗等限制选择模型的大小。包括四层基线在内的所有模型在双工测试集上都显示出对未处理信号的持续改进。这表明训练设置能够代表四种测试的双工条件的方差。相同的结论也得到了盲测集结果的支持。模型在所有包含回声信号和/或噪声的条件中都优于AEC-challenge基线。训练集仅包含英语语音样本,因此我们的研究没有评估对多种语言的泛化,这应该在未来得到解决。干净的ST-NE条件的结果只表明基线和DTLN-aec模型对没有噪声和回声的干净近端语音的影响相似,它们对最佳信号的不利影响非常有限。尽管如此,当听到处理过的信号时,仍然可以在某些条件下听到一些残余噪声。
  在未来改进DTLN-aec模型时,可以添加额外的噪声降低以进一步提高语音质量。为了减少仅远端条件下的残余噪声,可以添加语音活动检测,以检测近端语音并在没有近端语音的情况下控制信号。

2.5 结论

  本研究表明,双信号变换LSTM网络(DTLN-aec)可以成功应用于实时声学回声消除。DTLN-aec在AEC-Challenge的盲测集和合成双工测试集上产生了最先进的性能,并在AEC-Challenge中排名前五。该模型在公开可用的数据上进行了广泛的数据增强训练,从而为实际应用提供了一个可复现和鲁棒的模型。

标签:NETWORK,--,模型,语音,回声,信号,归一化,TRANSFORMATION,近端
From: https://blog.csdn.net/qq_34941290/article/details/144208927

相关文章

  • 【CSS in Depth 2 精译_067】11.2 颜色的定义(中):CSS 中的色域与色彩空间
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第四部分视觉增强技术✔️【第11章颜色与对比】✔️11.1通过对比进行交流11.1.1模式的建立11.1.2还原设计稿11.2颜色的定义11.2.1色域与色彩空间✔️11.2.2深入理解颜色表示法文章目录......
  • 【C++入门】【六】
    本节目标一、继承的概念及定义二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承八、继承的总结和反思九、笔试面试题一、继承的概念及定义1.继承的概念继承......
  • Crypto (Crypto Driver)
    IntroductionTheCryptoDriver(CRYPTO)iscalledbytheCryptoInterface(CRYIF)andperformsthespecificcryptographicfunctionality.TheCRYPTOspecification[1]offersasupersetofalgorithmswhichcanbeextendedby‘customalgorithms’.Thissoftw......
  • c语言数组学习
    数组数组的概念引例如果我们要在程序中表示一个学生的成绩,我们会使用一个int来表示,如:‘intscore’.假如我们要在程序中表示一组成绩,此时我们所学的常规的数据类型就无法在表示,这个时候我们就需要使用到一种新的表现形式,这种表现形式就是我们的数组。什么是数组数组是......
  • Modbus RTU
    目录 ​编辑与ModbusTCP的区别ModbusRTU特点ModbusRTU协议格式:报文详解:模拟器的使用虚拟串口的安装虚拟机绑定端口测试通信将ModbusSlave模拟器作为RTU设备的从机与ModbusTCP的区别        在一般工业场景使用modbusRTU的场景还是更多一些,modbus......
  • db设计,范式
    目标1.1clearsemantics        Makingsurethatthesemanticsoftheattributesisclearintheschema        有两个层面。        第一层面,是指每个实体只能包含自身的属性,不要额外添加其他实体的属性。        第二层面,是指......
  • @Autowired
    @Autowired@Autowired是Spring框架中的一个注解,主要用于自动装配Spring容器中的Bean。它是Spring提供的依赖注入(DI)的一种方式,简化了通过构造器、字段或setter方法进行依赖注入的过程。通过使用@Autowired,Spring会自动将合适的Bean注入到你的类中,从而实现对象的......
  • 技术文档编写指南:让知识传承更优雅
    文章目录一、技术文档的重要性二、文档结构设计1.清晰的层次结构2.内容组织原则三、文档编写技巧1.语言表达2.格式规范3.图文并茂四、文档维护策略1.版本控制2.定期更新3.更新流程五、常见误区总结参考建议在软件开发的世界里,一份优秀的技术文档不仅仅是......
  • h5 sqlite 操作封装
    参考文档错误码//数据库名称constnamesjk="sl"//存储路径constpath=`_doc/${name}.db`/**基本操作*查询数据库连接状态isOpenDatabase * 无参数* 返回truefalse***关闭数据库 closeDatabase* 无参数* Promise......
  • 电话机器人外呼神器,效果真的这么神奇吗?
    电话机器人外呼神器,其效果确实令人瞩目,称之为“神奇”也并不为过。以下是我从多个维度对其效果的详细阐述:一、高效自动化电话机器人外呼神器能够批量外呼,无需人工手动拨号,同时能筛选掉空号和拒接号码,大大提高了工作效率。据数据表明,人工一天只能拨打200~300通电话,而机器人每......