自学内容网 自学内容网

音频入门(一):音频基础知识与分类的基本流程

音频信号和图像信号在做分类时的基本流程类似,区别就在于预处理部分存在不同;本文简单介绍了下音频处理的方法,以及利用深度学习模型分类的基本流程。

目录

一、音频信号简介

1. 什么是音频信号

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读取一段音频,并展示其波形图、频谱图:

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):

参考:

1. Librosa: https://librosa.org/

2. python-soundfile — python-soundfile 0.11.0 documentation

3. https://github.com/yeyupiaoling/AudioClassification-Pytorch


原文地址:https://blog.csdn.net/oYeZhou/article/details/140720215

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!