GTCRN轻量级语音增强模型实战指南
GTCRN(Grouped Temporal Convolutional Recurrent Network)是ICASSP2024论文提出的超低计算资源需求的语音增强模型。此项目提供官方实现,仅需大约48.2K参数,展示了在保持高性能的同时,如何极大降低模型复杂度。GTCRN适用于噪音消除,能在DNS3和VCTK-DEMAND数据集上训练得到的预训练模型,其推理过程高效,特别是在流式处理方面,在特定CPU上的实时因子(RTF)达到了约0.07。
项目快速启动
安装依赖
首先,确保你的环境已安装Python,并通过以下命令安装必要的库:
pip install -r requirements.txt
依赖包包括:
- einops==0.7.0
- numpy==1.24.4
- ptflops==0.7
- soundfile==0.12.1
- torch==1.11.0
下载预训练模型
项目提供了在DNS3和VCTK-DEMAND数据集上训练的预训练模型,存放在checkpoints文件夹中:
checkpoints/model_trained_on_dns3.tar- DNS3数据集训练的模型checkpoints/model_trained_on_vctk.tar- VCTK-DEMAND数据集训练的模型
快速音频增强测试
使用以下代码进行快速音频增强测试:
import os
import torch
import soundfile as sf
from gtcrn import GTCRN
# 加载模型
device = torch.device("cpu")
model = GTCRN().eval()
ckpt = torch.load(os.path.join('checkpoints', 'model_trained_on_dns3.tar'), map_location=device)
model.load_state_dict(ckpt['model'])
# 加载音频数据
mix, fs = sf.read(os.path.join('test_wavs', 'mix.wav'), dtype='float32')
assert fs == 16000
# 推理过程
input = torch.stft(torch.from_numpy(mix), 512, 256, 512, torch.hann_window(512).pow(0.5), return_complex=False)
with torch.no_grad():
output = model(input[None])[0]
enh = torch.istft(output, 512, 256, 512, torch.hann_window(512).pow(0.5), return_complex=False)
# 保存增强后的音频
sf.write(os.path.join('test_wavs', 'enh.wav'), enh.detach().cpu().numpy(), fs)
模型核心架构
GTCRN采用创新的轻量化设计,主要包含以下核心组件:
ERB模块(Equivalent Rectangular Bandwidth)
将线性频带转换为ERB频带,提高频率分辨率,增强模型对语音特征的提取能力。
SFE模块(Subband Feature Extraction)
通过子带特征提取技术,从音频信号中提取更丰富的时频特征。
TRA模块(Temporal Recurrent Attention)
时间循环注意力机制,动态调整不同时间帧的重要性权重。
DPGRNN模块(Dual-path Grouped RNN)
双路径分组循环神经网络,结合了时间维度和频率维度的信息处理。
性能表现
GTCRN在多个测试集上展现出卓越的性能:
VCTK-DEMAND测试集表现:
- 参数量:0.05M
- 计算量:0.03 G/s
- SISNR:18.83
- PESQ:2.87
- STOI:0.940
DNS3盲测试集表现:
- DNSMOS-P.808:3.44
- BAK:3.90
- OVRL:2.70
流式推理支持
项目提供了流式推理版本,位于stream文件夹中。流式GTCRN在第12代Intel Core i5-12400 CPU上实现了0.07的实时因子,非常适合实时语音处理应用。
流式推理相关文件:
stream/gtcrn_stream.py- 流式推理实现stream/onnx_models/- ONNX模型文件stream/modules/- 流式处理核心模块
应用场景
GTCRN轻量级特性使其在多个领域具有广泛应用价值:
- 智能家居系统:提升智能音箱语音识别准确率
- 移动通信应用:优化手机通话和录音质量
- 视频会议系统:实现高质量远程语音通信
- 车载语音助手:改善行车环境中的语音交互体验
- 实时语音处理:流式推理支持实现低延迟语音增强
进阶使用
模型复杂度分析
项目提供了模型复杂度分析工具,可以详细评估模型的计算量和参数量:
from ptflops import get_model_complexity_info
model = GTCRN().eval()
flops, params = get_model_complexity_info(model, (257, 63, 2), as_strings=True, print_per_layer_stat=True)
print(f"计算量:{flops}, 参数量:{params}")
自定义训练
虽然项目主要提供预训练模型,但开发者可以根据自己的数据集进行微调训练。训练过程可以参考相关的语音增强训练框架。
最佳实践建议
-
音频预处理:对输入音频进行适当的预处理(如简单滤波)可进一步提升增强效果。
-
参数调优:根据具体应用场景调整模型参数,优化性能表现。
-
流式处理:充分利用模型的流式处理能力,实现实时的语音增强应用。
GTCRN以其极致的轻量化设计和出色的增强效果,为语音技术开发者提供了强大的工具。无论是产品集成还是学术研究,这款模型都将成为您语音增强工具箱中的得力助手。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



