📚旁证博引

余弦变换

要点

  1. 数学方程:数字信号和傅里叶分析,离散时间滤波器,小波分析
  2. Python代码实现及应用变换过程:
    1. 读取音频和处理音频波,使用Karplus-强算法制作吉他音频
    2. 离散傅里叶计算功能和绘制图示结果
    3. 计算波形傅里叶系数
    4. 正向和反向(逆)快速傅里叶FFT 实现和使用
    5. 位反转函数
    6. 正向和反向(逆)离散余弦变换
    7. 离散时间滤波器结果绘图
    8. 一维、二维和三维正向和反向(逆)离散小波变换
    9. 张量积将小波应用于图像,二维和三维张量积实现

Python线性代数傅里叶分析和动态系统模拟分析之一

✂️梗概

离散傅里叶分析数字声音

数字声音

数字声音是一个序列$\boldsymbol{x}=\left\{x_i\right\}_{i=0}^{N-1}$,对应于记录的a连续声音f的测量值以每秒 $f_s$ 测量的固定速率,即

$$ x_k=f\left(k / f_s\right), \quad \text { 对于 } k=0,1, \ldots, N-1 \text {. } $$

$f_s$ 称为采样频率或采样率。数字声音中的组成部分称为样本,连续样本之间的时间称为采样周期,通常表示为$T_s$。测量声音也称为对声音进行采样。

数字声音的质量通常通过比特率(每秒的位数)来衡量,即采样率与用于存储每个样本的位数(二进制数字)的乘积。 采样率和数字格式都会影响最终声音的质量。 这些被封装在数字声音格式中。

观察Python合成声音

首先,合成是使用各种方法创建声音的行为。 我将重点关注加法合成,即通过将不同信号相加的方式进行合成。

我将使用的库是 Numpy 和 Scipy。 Numpy 是一个用于数值计算的库,而 Scipy 是一个我将用于信号处理并将数据转换为声音文件的库。 我还将安装 matplotlib 来绘制声音信号。 Pydub 是一个用于播放音频的库。 为了安装这些包,我将使用 pip 并创建一个虚拟环境。我使用的是 Python 3.10,因此请调整您的 Python 安装说明。 在终端中,我们首先创建一个目录,然后创建一个 virtualenv 并安装必需的软件包。

请创建一个名为 sound.py 的新文件并在文本编辑器中打开它。这将是我用来合成声音的主文件。现在让我首先添加需要的导入。

 import numpy as np
 from scipy.io.wavfile import write
 from scipy import signal
 import matplotlib.pyplot as plt

让我们来回顾一下什么是声音。 声音是空气穿过空间的压力波。 它是一种称为纵波的波,意味着它垂直于传播方向移动。