毕业设计:基于深度学习的语音降噪系统 人工智能

目录

前言

项目背景

数据集

设计思路

算法理论技术

时域语音降噪

双阶段语音降噪

实验环境

模型训练

更多帮助


前言

    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

        🚀对毕设有任何疑问都可以问学长哦!

       大家好,这里是海浪学长计算机毕设专题,本次分享的课题是

       🎯基于深度学习的语音降噪系统

项目背景

       随着智能语音交互设备的普及,语音降噪技术在实际应用中显得尤为重要。语音降噪目的是提升语音识别的准确率,改善用户语音交互体验。通过采用先进的深度学习算法,对噪声环境下的语音信号进行有效降噪处理,对于推动语音识别技术的发展具有重要的现实意义和长远的发展价值。

数据集

       由于网络上没有现有的合适的语音降噪数据集,我决定通过模拟噪声环境和互联网收集两种办法,收集语音并制作了一个全新的数据集。这个数据集包含了各种噪声环境下的语音样本,通过模拟噪声环境和互联网收集,我能够获取到真实场景和多样的工作环境,这将为我的研究提供更准确、可靠的数据。在深度学习模型的训练过程中,数据扩充是提高模型泛化能力的重要手段。针对语音降噪的数据,可以通过添加噪声、调整噪声强度、改变语音速度等操作来增加数据的多样性。

import numpy as np
from scipy.io import wavfile

def augment_data(samples, noise_path, augmentation_rate=0.2):
    augmented_samples = []
    noise_samples = np.random.choice(noise_path, size=int(len(samples) * augmentation_rate))
    
    for sample in samples:
        augmented_sample = np.append(sample, np.random.choice(noise_samples), axis=0)
        augmented_samples.append(augmented_sample)
    
    return augmented_samples

# 假设samples是原始语音信号数组,noise_path是噪声音频文件的路径
# 调用函数进行数据扩充
augmented_samples = augment_data(samples, noise_path)

设计思路

算法理论技术

时域语音降噪

       语音降噪技术在提高语音信号质量方面起着至关重要的作用,它通过从混合有背景噪声的语音信号中提取和恢复出干净的语音成分,极大地改善了语音的听感和清晰度。根据使用麦克风的数量,这项技术主要分为单通道语音降噪和多通道语音降噪两种形式。多通道语音降噪通过使用多个麦克风捕捉声音,能够获取更为丰富的空间信息,这有助于更准确地识别和分离噪声与语音信号,因此通常能够达到比单通道更优的降噪效果。多通道系统常见于需要较高清晰度应用场景,如高质量的语音通话、语音识别和智能语音助手等。

毕业设计:基于深度学习的语音降噪系统 人工智能

       基于子空间分解的时域语音降噪网络(SPTSNRN)。SPTSNRN在编码器和解码器之间采用了基于自注意力的投影模块,能够提取时序信息并将嵌入向量投影到两个正交的子空间,从而更有效地分离语音和噪声信息。同时,通过添加门控模块来抑制编码器特征图中的无关信息干扰。与Subspace方法相比,SPTSNRN直接在时域进行语音信号处理和预测,避免了相位预测问题,并能够取得更好的降噪效果。

毕业设计:基于深度学习的语音降噪系统 人工智能

        SPTSNRN是一种基于子空间投影的时域语音降噪方法,它以Wave-U-Net模型为基础,通过编码器将带噪语音输入转换为包含高层特征的嵌入向量。该向量随后被投影模块处理,分离成语音嵌入向量和噪声嵌入向量,两者分别对应于语音和噪声主导的子空间,并且在这些子空间之间通过正交约束实现分离。这种设计使得语音和噪声信息得到了有效的分离,有助于提高降噪的准确性。最后,语音解码器和噪声解码器分别利用这两个嵌入向量来重建干净的语音信号和噪声信号。SPTSNRN的优点在于它能够在时域直接处理语音信号,避免了相位预测问题,并且通过正交子空间分离噪声和语音信息,从而提高了语音降噪的性能和质量。

毕业设计:基于深度学习的语音降噪系统 人工智能

双阶段语音降噪

       SPTSNRN在推理阶段能够预测噪声信息,这些信息对于提升语音降噪效果具有潜在的价值。为了充分利用这些预测的噪声信息,根据两种不同的信息融合策略:时域融合和频域融合,并设计了相应的融合网络。这两种策略的共同点在于都通过网络预测权重,并利用这些权重对直接预测和间接预测的语音信号进行加权融合,从而提高最终语音信号的质量。时域融合方案直接在时域层面处理信号并预测权重,随后在时域波形上进行加权相加,以融合直接预测和间接预测的语音信号。而频域融合方案则先利用STFT将时域信号转换为频域信号,然后在频域上预测权重,接着在频域上进行加权相加,最后通过逆短时傅里叶变换(iSTFT)将频域信号转换回时域,得到最终的语音信号。

毕业设计:基于深度学习的语音降噪系统 人工智能

       通过将SPTSNRN与MN级联,构建了一个双阶段的语音降噪网络SPTSNRN-MN。这个网络首先在第一个阶段利用SPTSNRN预测语音信号和噪声信号。SPTSNRN通过自注意力机制和子空间分解等技术,有效地从带噪语音中分离出语音和噪声信息。在第二个阶段,MN将预测的噪声信号与语音信号相融合,以生成更高质量的降噪语音信号。MN可能采用不同的融合策略,如时域或频域融合,以及相应的网络结构来优化融合过程。这种双阶段的策略充分利用了SPTSNRN和MN各自的优势,通过级联的方式,进一步提升语音降噪的性能和效果。

毕业设计:基于深度学习的语音降噪系统 人工智能

实验环境

       实验环境配置和超参数设置对语音降噪模型的性能有着重要影响。在本实验中,代码采用Python 3.7.0版本编写,深度学习模型实现则依赖于Pytorch框架的1.7.0版本。所有模型训练和测试工作都在配备Tesla P100显卡的平台上进行,该显卡支持CUDA 11.0版本,这为实验提供了强大的计算支持。
       在实验设置方面,超参数的选择对模型的学习过程和最终性能有着直接影响。本实验中,编码器和解码器的卷积核大小、步长、融合模块的卷积核大小和步长、编码器模块数量、卷积通道递增数、自注意力层的维度等参数都被精心选择以优化模型性能。此外,损失函数中的权重系数也被设定以平衡不同损失项对模型训练的影响。

模型训练

       语音质量评价分为主观评价指标和客观评价指标两大类。主观评价指标以平均意见得分(MOS)为核心,通过多位测试者在相同环境下根据预设标准为语音打分,最终取平均值得到评价结果。MOS采用5分制,分数越高表示语音质量越好。然而,主观评价方法成本高、耗时长,因此研究者更倾向于使用客观评价指标。常见的客观评价指标包括PESQ、CSIG、CBAK和COVL等。这些指标通过量化语音质量的各种特征,为语音降噪等技术的性能评估提供了快速且经济的手段。

相关代码示例:

# 训练模型
# 这里是一个简单的训练循环
# for epoch in range(num_epochs):
#     for data in data_loader:
#         # 获取输入数据(带噪语音)和目标数据(干净语音)
#         noisey_speech, clean_speech = data
#         noisey_speech = Variable(noisey_speech.float())
#         clean_speech = Variable(clean_speech.float())
#         # 前向传播
#         output = model(noisey_speech)
#         # 计算损失
#         loss = criterion(output, clean_speech)
#         # 反向传播和优化
#         optimizer.zero_grad()
#         loss.backward()
#         optimizer.step()
#     print(f'Epoch {epoch+1}, Loss: {loss.item()}')
# 评估模型
# model.eval()
# with torch.no_grad():
#     # 这里你可以在测试集上评估模型
#     # 例如:
#     # test_data, _ = next(iter(data_loader))
#     # test_data = Variable(test_data.float())
#     # clean_speech = model(test_data)
#     # sf.write('output.wav', clean_speech.squeeze(0).numpy(), 16000)
# 保存模型
# torch.save(model.state_dict(), 'speech_denoising_model.pth')

海浪学长项目示例:

更多帮助

  • 28
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值