语音数据增强
1. Specaugment
https://ai.googleblog.com/2019/04/specaugment-new-data-augmentation.html
这是一篇来自google的工作,主要通过在时域和频域进行掩盖来进行数据增强;
自己写的可视化代码,使用torchlibrosa库:
import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
import torch
from torchlibrosa.augmentation import SpecAugmentation
# 加载音频文件
file_path = '00_BRUSH.wav'
y, sr = librosa.load(file_path, sr=None)
# 计算音频信号的 Short-Time Fourier Transform (STFT)
D = librosa.stft(y)
# 计算 spectrogram
spectrogram = librosa.amplitude_to_db(abs(D), ref=np.max)
# 绘制原始音频信号的频谱图
plt.figure(figsize=(10, 6))
librosa.display.specshow(spectrogram, sr=sr, x_axis='time', y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.title('origin spectrogram')
plt.savefig('origin_spectrogram.png')
# 转换为 PyTorch 张量
spectrogram_tensor = torch.from_numpy(spectrogram).unsqueeze(0).unsqueeze(0)
# 应用 SpecAugmentation
spec_augmenter = SpecAugmentation(time_drop_width=64, time_stripes_num=2, freq_drop_width=8, freq_stripes_num=2)
augmented_spectrogram_tensor = spec_augmenter(spectrogram_tensor)
# 将增强的频谱图转换回 numpy 数组
augmented_spectrogram = augmented_spectrogram_tensor.squeeze(0).squeeze(0).numpy()
# 绘制使用 SpecAugmentation 的频谱图
plt.figure(figsize=(10, 6))
librosa.display.specshow(augmented_spectrogram, sr=sr, x_axis='time', y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.title('after spec augment spectrogram')
plt.savefig('spec_augment.png')
原始频谱图:
specAugmentation后的频谱图:
2. specAugment++
这篇工作是对specAugment的补充,来自PKU,在音频场景分类中取得更好的效果
论文链接:
https://arxiv.org/abs/2103.16858#
思想是将频谱图上的掩盖(置0)改为替换为随机噪声或者mixup;
如果你觉得博客内容有帮助,请收藏书签。
版权声明:转载文章之后必须在文章页面给出原文连接(创意共享3.0许可证)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库