# 音乐分析 **Repository Path**: Yiqian7a/music-analysis ## Basic Information - **Project Name**: 音乐分析 - **Description**: 使用python对音频文件进行分析,获取音乐和音调、和旋,声音位置信息,更好地展现音频特征 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2024-05-14 - **Last Updated**: 2025-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 本项目使用`python3.11`环境搭建 ## 前置知识 声音是由一系列相位、振幅、频率、时长不同正弦波叠加的后形成的震荡,根据叠加的位置、波形不同,可以得到不同响度、音调、音色的声音,这三个属性也成为声音的三要素,然而不是所有声音都有音调的属性。 本文使用**科学音调记号法(Scientific pitch notation)**表示音高。例如国际标准音 A4,标准频率为440Hz,A表示音符的音名,而4表示该音位于第4个八度区间。音名和唱名有以下对应关系: C-do, D-re, E-mi, F-fa, G-sol, A-la, B-ti(简谱记为 1 到 7) 从一个C开始到下一个C记为一个八度区间,例如一列音高 {A1, B1, C2, D2, E2, F2, G2, A2, B2, C3} 中,C2-B2为第二个八度区间的范围。 在十二平均律中使用12个半音划分一个八度区间,上述的7个音名中,除E到F以及B到C的音程为一个半音外,其余任意两个音名之间的音程为两个半音,也就是一个全音。将音调提高一个八度即在频率上翻一倍,我们可以用递归序列来描述半音音阶: $$ P_i = 2^\frac{1}{12}P_{i-1} $$ ## 原理解析 使用傅里叶变换,可以将一段声音信号从时域转换到频域,在频域中展示其频率的分布。如果是连续信号的傅立叶变换,纵坐标通常表示信号的幅度,即信号在不同频率上的振幅大小;而对于离散信号的傅立叶变换,纵坐标通常表示为信号的功率,即信号在不同频率上的能量分布情况。 由于计算机获得声音信号是通过采样的方式进行,这样获得的信号一定是离散的,因此使用离散傅立叶变换。为了尽可能使其纵坐标接近其振幅,我们将采样后的声音信号以25ms的时间划分(由人耳能听见的最小频率约为20hz,根据**奈奎斯特采样定理(Nyquist Sampling Theorem)**,取其倒数的两倍作为最小时间间隔),离散傅里叶变换的时间