声学学习笔记

本文讨论了声音和语音的区别,介绍了WAV和AIFF无损音频格式,以及MP3和M4A有损压缩格式。重点讲解了Python中的Librosa库用于处理音频信号,包括波形图、频谱图的绘制,以及预处理方法如预加重和模数转换。此外,还涉及了傅里叶变换、小波变换和盲源分离技术,以及PCA和ICA在数据分析中的应用。
摘要由CSDN通过智能技术生成

sound和voice区别

  • sound:任何物体震动产生的机械能在空气中传播形成的声音。
  • voice:指的是个人说话或者唱歌的声音。(人或者动物发出的声音)
  • voice是个人发出的声音,而speech是使用语言与他人进行交流的行为。

.WAV

格式类型:无压缩无损;波形音频文件(也称为WAV文件)是较流行的数字音频格式之一,并且是录音棚录制的黄金标准。WAV文件以最高质量捕获并重建原始音频波形,而不会以任何方式影响或改变声音的声音特征。WAV文件以最高质量捕获并重建原始音频波形,而不会以任何方式影响或改变声音的声音特征。

.AIFF (.aif .aiff)

格式类型:无压缩无损;以前 WAV是由Microsoft Windows和IBM之间的合作伙伴关系创建的,因此WAV文件只能在Windows计算机上本地播放。另一方面,AIFF是Macintosh对WAV文件的响应,它允许在Apple计算机上进行完整的录音室质量的音频记录和播放。如今,两种格式都可以在任何操作系统上本地记录和播放,因此它们很容易互换,无论格式如何都可以提供相同的高质量音频。

.mp3

格式类型:压缩有损;一首三分钟的歌曲以WAV或AIFF格式输出大约需要30MB,而转换为MP3则只占用十分之一的空间,大约3MB。

.m4a,.mp4

格式类型:压缩有损;M4A(MPEG-4第14部分)文件是Apple对MP3的回应。M4A比MP3压缩效果更佳,这样可以减小文件大小,同时提供更高的音频质量。

Python绘制语音信号的波形图

import librosa
import librosa.display
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rc("font",family='SimHei') # 显示中文(否则会乱码)
matplotlib.rcParams['axes.unicode_minus']=False # 显示符号(否则符号,会显示乱码,因为中文干扰)
y, sr = librosa.load('wav_sound.wav')  # 加载wav音频;y是加载的音频数据;sr是采样率,表示每秒采样的样本数。
plt.plot(y);
plt.title('图的标题');  # 图的标题
plt.xlabel('x轴名称');
plt.ylabel('y轴名称');
plt.show()

在这里插入图片描述
Librosa 是一个音频处理库,提供了一系列用于处理音频文件的函数和工具。

Librosa.display 则是 Librosa 中的一个子模块,提供了一些用于显示音频数据的函数,如波形图、频谱图、色谱图等。它们能够可视化音频数据的特征,并帮助我们更好地了解和分析音频信号。
Matplotlib 是一个开源的绘图库,用于生成高质量的二维图形。而 matplotlib.pyplot 是 matplotlib 的一个子模块,它提供了一个快速简便的编程接口,让使用者在 Python 中绘制图像更方便。

具体而言,matplotlib.pyplot 提供了一组函数,可以快速创建各种常见的图像,如线图、散点图、条形图、直方图、饼图等,并提供了丰富的设置选项以自定义图像的样式和表现形式。同时,pyplot 还支持多图合并展示,并且能够轻松实现交互式和动态图像的展示。

综上,Matplotlib 的核心功能是绘图,而 matplotlib.pyplot 则是一种简便的绘图接口,帮助用户更方便地使用 Matplotlib 进行数据可视化。

import librosa

# 加载音频文件
audio_data, sampling_rate = librosa.load('audio.wav')

# audio_data是加载的音频数据
# sampling_rate是采样率,表示每秒采样的样本数

# 可以在此处对加载的音频数据进行处理和分析
# 例如:获取音频时长、提取特征、进行音频变换等

Python绘制语音信号的频谱图

音频信号由几个单频声波组成。 在一段时间内对信号进行采样时,我们仅捕获得到的幅度。 傅立叶变换是一个数学公式,它使我们可以将信号分解为单个频率和频率幅度。 换句话说,它将信号从时域转换到频域。 结果称为频谱。

单通道音频的波形图、频谱图和语谱图的区别。

波形图(Waveform):波形图展示了音频信号在时间轴上的振幅变化情况,将声音的振幅值作为纵轴,时间作为横轴。波形图反映了音频信号的整个时域特征,包括音频的响度、声音的起伏、持续时间等。波形图通常用于观察音频的整体特征、检测静音段、分析时长等。

频谱图(Spectrogram):频谱图展示了音频信号在频率域上的能量分布情况,将频率作为纵轴,时间作为横轴,使用颜色灰度来表示音频信号在不同频率上的能量或功率。频谱图通过傅里叶变换将音频信号转换到频率域上进行分析,可以观察音频信号在不同频率上的成分强度和变化。频谱图通常用于音频信号处理、音乐分析、语音识别等领域。

语谱图(Spectrogram):语谱图是频谱图的一种特定形式,用于表示语音信号在时间和频率上的能量分布。语谱图将语音信号的频谱信息绘制成三维图像,其中时间作为横轴,频率作为纵轴,颜色或灰度表示音频信号的能量或功率。语谱图常用于语音信号处理、语音识别等领域,在语音信号的时频特性分析中有重要应用。

综上所述,波形图展示了音频信号的时域特征,频谱图展示了音频信号在频率域上的分布特征,而语谱图是频谱图的一种特殊形式,着重展示语音信号在时间和频率上的能量分布。

声音预处理

预加重:语音会受到唇端抑制,高频能量明显降低。预加重目的是:为了补偿语音信号高频部分的振幅。
分帧
加窗

模拟量信号转换成数字信号的过程叫做模数转换,简称ADC(Analog-to-Digital Conversion)
为了更好的分析或处理信号,实际应用时需要从频域而非时域的角度观察原信号。但物理意义上只能直接获取信号的时域信息,为了得到信号的频域信息需要利用傅里叶变换这个工具计算出原信号的频谱函数。

傅里叶变换

傅里叶变换本质是将时域的信息汇总到频域中。
从傅里叶变换进阶到小波变换(一)

傅里叶分析之掐死教程(完整版)

基频,倍频,基波,谐波

时域描述,一般用基波,谐波;频数描述,就用基频,谐频

  • 基频(fundamental frequency)自由振荡系统的最低振荡频率,复合波中的最低频率。【指复杂声音中最低且通常情况下最强的频率。】
    高等数学中:任何周期性函数都可以进行傅里叶级数分解,均可分解为一个基频正弦波加上许多高次频率的正弦波,高次频率是基频的整倍数(N,只能为整数)。【频率是波形密集度】
    在这里插入图片描述

盲源分离

从多维观测信号中分离出源信号,除去混叠与噪声的过程。可以用于麦克风阵列的信号分析、生理电信号(EEG)等多输入多输出的采集场景,多数据指标融合分析。

主要分析方法

1、主成分分析(PCA)

PCA本质是一个降维的过程,目的寻找变量的冗余度更小的子集。PCA是ICA的一个非常必要的预处理:可以降低信号的维度,ICA要求输入维度与输出维度一致;当通道数等于源信号数,PCA做预处理,可以将ICA的估计参数减少一半,降低计算复杂度。但PCA(或SVD)方法保证分解出来的信号分量不相关,不能保证这些分量独立。

总结一下PCA的算法步骤:
设有m条n维数据。
有m条六维数据;每一行代表一个属性字段。
[ 日期 1 日期 2 ⋯ 日期 m 浏览量 1 浏览量 2 ⋯ 浏览量 m 访客数 1 访客数 2 ⋯ 访客数 m 下单数 1 下单数 2 ⋯ 下单数 m 成交数 1 成交数 2 ⋯ 成交数 m 成交金额 1 成交金额 2 ⋯ 成交金额 m ] \begin{bmatrix}日期1&日期2&\cdots&日期m\\浏览量1&浏览量2&\cdots&浏览量m\\访客数1&访客数2&\cdots&访客数m\\下单数1&下单数2&\cdots&下单数m\\成交数1&成交数2&\cdots&成交数m\\ 成交金额1& 成交金额2&\cdots& 成交金额m\\\end{bmatrix} 日期1浏览量1访客数1下单数1成交数1成交金额1日期2浏览量2访客数2下单数2成交数2成交金额2日期m浏览量m访客数m下单数m成交数m成交金额m

1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵C= 1 / m 1/m 1/m X X X X T X^T XT
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX
即为降维到k维后的数据

案例在这里插入图片描述

import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import matplotlib
matplotlib.rc("font",family='SimHei') # 显示中文(否则会乱码)
matplotlib.rcParams['axes.unicode_minus']=False # 显示符号
rng = np.random.RandomState(1)
X = np.dot(rng.rand(2, 2), rng.randn(2, 200)).T  # 随机生成200点
plt.scatter(X[:, 0], X[:, 1])
plt.title('PCA降维前');  # 图的标题
plt.axis('equal');
plt.show()

在这里插入图片描述

2、独立成分分析(ICA)

PCA(或SVD)方法保证分解出来的信号分量不相关,不能保证这些分量独立。而ICA就是针对独立分量分解盲源分离与独立分量分析有很强的联系,因此常采用ICA作为BSS的分析方法

MFCC谱

Mel频率倒谱系数(Mel Frequency Cepstrum Coefficient,MFCC);Mel频率是基于人耳听觉特性提出来的,它与Hz频率成非线性对应关系。梅尔谱能够刻画人耳听觉相应!!
在这里插入图片描述

librosa.load()函数 :读取文件,可以是wav、mp3等格式。
该函数是会改变声音的采样频率的。如果 sr 缺省,librosa.load()会默认以22050的采样率读取音频文件,高于该采样率的音频文件会被下采样,低于该采样率的文件会被上采样。因此,如果希望以原始采样率读取音频文件,sr 应当设为 None。具体做法为 y, sr = librosa.load(filename, sr=None)。

fs, data = wavfile.read(path): fs采样频率,data:(采样点数,声道数)
200.wav具有四通道,framerate:48000采样频率;nframes:960000采样点数;
2001.wav:具有一通道,framerate:48000采样频率;nframes:960000采样点数;
在这里插入图片描述

在这里插入图片描述

如果为了防止原始音频的采样率不统一影响模型训练和预测,需要对重采样进行采样率的标准化。需要添加data = librosa.resample(data.astype(np.float32), fs, 16000), 注意一定要对数据做astype(np.float32,否则会出现 下采样无效。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值