音频信号和图像信号在做分类时的基本流程类似,区别就在于预处理部分存在不同;本文简单介绍了下音频处理的方法,以及利用深度学习模型分类的基本流程。
目录
[1. 什么是音频信号](#1. 什么是音频信号)
[2. 音频信号长什么样](#2. 音频信号长什么样)
一、音频信号简介
1. 什么是音频信号
音频信号是声音波形的电学表示,它可以捕捉声音的频率、幅度和时间特性。音频信号可以是模拟的,也可以是数字的:
-
模拟音频信号:
- 模拟音频信号是连续变化的电信号,它模拟了原始声音波形的物理特性。
- 它可以通过麦克风捕获,并通过扬声器、耳机或放大器进行播放。
- 模拟信号可以被录制在磁带、黑胶唱片等介质上。
-
数字音频信号:
- 数字音频信号是通过将模拟信号转换为一系列数字值来表示的,这个过程称为模数转换(ADC)。
- 数字音频信号通常以文件形式存储,如MP3、WAV、AAC等格式。
- 数字音频可以方便地进行编辑、处理和传输,且不受模拟信号的退化问题影响。
音频信号的基本属性包括:
- 采样率(Sampling Rate):每秒内捕获的样本数量,单位是赫兹(Hz)。常见的采样率有44.1 kHz(CD质量)、48 kHz等。
- 位深度(Bit Depth):每个样本的量化精度,单位是比特(bit)。常见的位深度有16位、24位等。
- 通道数(Channels):音频信号的声道数量,如单声道(Mono)、立体声(Stereo)或环绕声(Surround Sound)。
- 频率内容(Frequency Content):音频信号包含的频率范围,通常以赫兹(Hz)为单位。
- 幅度(Amplitude):信号的强度或大小,通常影响声音的响度。
2. 音频信号长什么样
我们送入计算机的,肯定是数字音频信号了。那么,如何读取一段音频,并看看它是如何表示的呢?
和图像领域用Opencv或PIL等库读取图片类似,音频领域也有些专门的库可以读取/处理音频。
常用的库有soundfile、librosa等。下面我们使用soundfile读取一段音频,并展示其波形图、频谱图:
python
import soundfile
import resampy
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import stft
if __name__ == '__main__':
audio_path = "/data/datasets/Audios/Golf_sound/1_batting/batting_240725_36.MP3"
audio, sample_rate = soundfile.read(audio_path)
print(audio.shape)
print(sample_rate)
audio_mean = np.mean(audio, 1)
audio_resampled = resampy.resample(audio_mean, sample_rate, 16000, filter="kaiser_best")
print(audio_resampled.shape)
# 计算STFT
freqs, times, spectrogram = stft(audio_resampled, sample_rate)
# 绘制波形图
plt.figure(figsize=(10, 2))
plt.title('Audio Waveform')
plt.xlabel('Time (seconds)')
plt.ylabel('Amplitude')
plt.plot(audio[:, :])
# 绘制频谱图
plt.figure(figsize=(10, 4))
plt.title('Audio Spectrogram')
plt.xlabel('Time (seconds)')
plt.ylabel('Frequency (Hz)')
plt.imshow(np.abs(spectrogram), aspect='auto', origin='lower')
plt.colorbar()
运行后会绘制两个图:音频的波形图和STFT频谱图。
可以看到,原始音频是多通道的(示例音频是2通道,不同可能会有不同通道数),每个通道都可以看成是个一维的时序信号。
二、音频的深度学习分类基本流程
那么我们如何对音频信号进行分类呢?在信号处理领域,通常会将原始信号转换为更容易捕获特征的频域信号,然后利用一些手工设计特征或者深度学习方法捕获的特征,送入分类器,然后得到各个类别的概率。
下面是一个从原始信号到最终类别概率的深度学习算法流程:
相关的深度学习模型有CAMPPlus、ResNetSE、Res2Net等,它们可以从频域特征提取更为高级的语义特征,然后利用一个FC层分类得到各个类别的概率。
模型论文(引自参考3):
- EcapaTdnn:ECAPA-TDNN: Emphasized Channel Attention, Propagation and Aggregation in TDNN Based Speaker Verification
- PANNS:PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition
- TDNN:Prediction of speech intelligibility with DNN-based performance measures
- Res2Net:Res2Net: A New Multi-scale Backbone Architecture
- ResNetSE:Squeeze-and-Excitation Networks
- CAMPPlus:CAM++: A Fast and Efficient Network for Speaker Verification Using Context-Aware Masking
- ERes2Net:An Enhanced Res2Net with Local and Global Feature Fusion for Speaker Verification