GTCRN轻量级语音增强模型实战指南

GTCRN轻量级语音增强模型实战指南

【免费下载链接】gtcrn The official implementation of GTCRN, an ultra-lite speech enhancement model. 【免费下载链接】gtcrn 项目地址: https://gitcode.com/gh_mirrors/gt/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}")

自定义训练

虽然项目主要提供预训练模型,但开发者可以根据自己的数据集进行微调训练。训练过程可以参考相关的语音增强训练框架。

最佳实践建议

  1. 音频预处理:对输入音频进行适当的预处理(如简单滤波)可进一步提升增强效果。

  2. 参数调优:根据具体应用场景调整模型参数,优化性能表现。

  3. 流式处理:充分利用模型的流式处理能力,实现实时的语音增强应用。

GTCRN以其极致的轻量化设计和出色的增强效果,为语音技术开发者提供了强大的工具。无论是产品集成还是学术研究,这款模型都将成为您语音增强工具箱中的得力助手。

【免费下载链接】gtcrn The official implementation of GTCRN, an ultra-lite speech enhancement model. 【免费下载链接】gtcrn 项目地址: https://gitcode.com/gh_mirrors/gt/gtcrn

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值