多通道语音分离、降噪与去混响技术文档
NBSS 项目地址: https://gitcode.com/gh_mirrors/nb/NBSS
本技术文档旨在为用户提供详细指导,以便理解和应用基于PyTorch的多通道语音处理项目。该项目围绕一系列研究论文展开,重点是使用深度学习进行复杂的音频信号处理任务。
安装指南
在开始之前,确保您的环境已经配置了Python,并且建议安装最新版本的PyTorch以获得最佳性能。通过以下命令安装必要的依赖项:
pip install -r requirements.txt
此外,您还需要安装用于生成房间脉冲响应(gpuRIR)的库,详情参考其GitHub仓库:DavidDiazGuerra/gpuRIR。
项目使用说明
此项目专注于实现多种多通道语音处理算法,如文中提到的[NB-BLSTM][1], [NBC][2], [NBC2][3], 和 [SpatialNet][4]。核心功能包括训练和测试自定义网络模型来执行语音分离、降噪和去混响。
数据集准备
为了使用例如[SpatialNet][4]进行实验,需要生成或使用特定的数据集,如SMS-WSJ_plus
。遵循这些步骤生成所需的房间脉冲响应(RIRs):
CUDA_VISIBLE_DEVICES=0 python generate_rirs.py --rir_dir ~/datasets/SMS_WSJ_Plus_rirs --save_to configs/datasets/sms_wsj_rir_cfg.npz
cp configs/datasets/sms_wsj_plus_diffuse.npz ~/datasets/SMS_WSJ_Plus_rirs/diffuse.npz
对于基本的SMS-WSJ数据集,可以访问:fgnt/sms_wsj获取更多信息。
训练与测试
项目利用了pytorch-lightning
框架。了解其命令行接口(CLI)将对您非常有帮助,可参考相关文档。
训练模型
要训练SpatialNet模型,使用以下命令(记得替换相应的配置路径和参数):
python SharedTrainer.py fit \
--config=configs/SpatialNet.yaml \
--config=configs/datasets/sms_wsj_plus.yaml \
--trainer.devices=0 \
--max_epochs=100
模型测试
完成训练后,使用以下命令测试模型性能,其中version_x
和epochY_neg_si_sdrZ
需替换成实际的版本号和检查点文件名:
python SharedTrainer.py test \
--config=logs/SpatialNet/version_x/config.yaml \
--ckpt_path=logs/SpatialNet/version_x/checkpoints/epochY_neg_si_sdrZ.ckpt \
--trainer.devices=0
模块版本信息
- NB-BLSTM/NBC/NBC2: 在
models/arch/NBSS.py
中定义。 - SpatialNet: 查看
models/arch/SpatialNet.py
。 - 在线SpatialNet: 实现位于
models/arch/OnlineSpatialNet.py
。
注意事项
- 针对NB-BLSTM/NBC/NBC2模型的特殊命令和设置,请切换到
NBSS
分支。 - 确保所有路径指向正确,特别是在恢复训练或测试时指定的配置文件和检查点路径。
通过上述步骤,您可以成功地运行并试验这个强大的多通道语音处理工具包,进一步探索并优化其在不同应用场景下的表现。