python算法对音频信号处理Sonification :Gauss-Seidel迭代算法
原文链接: http://tecdat.cn/?p=7620 可以将44.1kHz单通道.wav文件中的一秒读取到长度为44100的数组(称为b)中。给定矩阵A,我们寻求系统Ax = b的解。通过Gauss-Seidel的迭代,向量如果我们将b记录的录音,则将一些白噪声作为我们的初始猜测,并在每次交替中写出Ax,我们会观察到b中高音调的音符首先变得可听,而同时白噪声的音调分解。 最初的12秒.wav文件的音频(白噪声) initialAx.wav 初始Ax,残差和残差FFT的图: 经过一轮迭代,高音 转化gauss_seidel_out000000.wav 在光谱中可以看到一些结构: 第二次 迭代 : gauss_seidel_out000001.wav 第三次 迭代 : gauss_seidel_out000002.wav 第四次 迭代 : gauss_seidel_out000003.wav 这一切都在python中完成。将.wav文件加载到数组中,在scipy中还不错。为了避免缓存问题,必须使用稀疏矩阵类,因为12秒的.wav文件需要一个大小为12 * 44100的数组。这是我使用的TridiagonalMatrix类代码片段: from numpy import * #a tridiagonal matrix