欢迎光临
我们一直在努力

【硬科普】从Mel尺度到内心音准曲线:人耳如何感知音高?

一、引言:一个看似简单却复杂的问题

当我们听到一个声音时,大脑是如何判断它“有多高”的?这个问题看似简单,实则涉及心理声学、神经科学、音乐认知等多个领域的交叉。更令人着迷的是,普通听众和训练有素的音乐家对音高的感知方式截然不同——前者遵循某种“平均规律”,后者则形成了个性化的“内心音准曲线”。

本文将带你完成一次从物理声学到音乐心理学的探索之旅:首先通过MATLAB可视化Mel尺度的数学本质,然后深入剖析音乐家内心音准曲线的研究进展,揭示两者之间的本质区别。


文章目录

    • 一、引言:一个看似简单却复杂的问题
    • 二、Mel尺度:描述“普通人”音高感知的数学工具
      • 2.1 什么是Mel尺度?
      • 2.2 三个经典公式的数学表达
      • 2.3 MATLAB可视化:双对数坐标下的幂律分析
        • 核心代码片段
        • 可视化结果解读
      • 2.4 双对数坐标的物理意义
    • 三、音乐家的“内心音准曲线”:超越Mel尺度的认知结构
      • 3.1 问题的提出
      • 三、最直接的相关研究:韩宝强《音乐家的音准感》
        • 3.1 两种音准感的区分
        • 3.2 关键发现:音差分辨阈(JND)
        • 3.3 影响内心音准曲线的维度
      • 3.2 Mel尺度 vs. 音乐家的音高标尺
      • 3.3 实验证据:音乐家如何判断音程?
      • 3.4 神经科学层面的证据
        • 脑干的选择性增强
        • 绝对音感者的音色依赖
      • 3.5 跨文化视角:印度卡纳提克音乐的研究
      • 3.6 总结:什么是“音乐家的内心音准曲线”?
    • 四、综合讨论:两条曲线的交汇与分野
      • 4.1 为什么Mel尺度“不够用”?
      • 4.2 对数频率:真正的“音乐标尺”
      • 4.3 可视化对比:把两条曲线放在一起
    • 五、结论
    • 附录:完整MATLAB代码
    • 参考文献

二、Mel尺度:描述“普通人”音高感知的数学工具

2.1 什么是Mel尺度?

Mel尺度是心理声学中最重要的概念之一,由Stevens等人于1937年提出,旨在建立一个与主观音高感受呈线性关系的度量体系。简单来说,如果我们让听众判断一个声音的“音高”是另一个声音的两倍,Mel尺度就是要找到满足这种关系的数学映射。

2.2 三个经典公式的数学表达

学界提出了多个Mel尺度的解析近似公式,本文选取最具代表性的三个:

提出者公式特点
O’Shaughnessy (1987)

m

=

2595

log

10

(

1

+

f

/

700

)

m = 2595 \\cdot \\log_{10}(1 + f/700)

m=2595log10(1+f/700)

最常用,MFCC标准
Fant (1949)

m

=

1000

log

2

(

1

+

f

/

1000

)

m = 1000 \\cdot \\log_2(1 + f/1000)

m=1000log2(1+f/1000)

早期经典,严格满足

m

(

1000

)

=

1000

m(1000)=1000

m(1000)=1000

Umesh & Cohen (1999)

m

=

A

ln

(

1

+

f

/

700

)

m = A \\cdot \\ln(1 + f/700)

m=Aln(1+f/700),

A

=

1000

/

ln

(

1

+

1000

/

700

)

A = 1000/\\ln(1+1000/700)

A=1000/ln(1+1000/700)

数学自洽,误差最小

一个有趣的发现:O’Shaughnessy公式中的常数2595实际上是

1000

/

log

10

(

17

/

7

)

1000/\\log_{10}(17/7)

1000/log10(17/7)的近似取整,因此它与Umesh&Cohen公式在数学上完全等价,差异仅来自常数舍入(最大差距约0.055 mel,完全可以忽略)。

2.3 MATLAB可视化:双对数坐标下的幂律分析

下面通过MATLAB代码对比这三个公式,并引入线性映射作为对比基准。完整的可视化代码见文末附录。

核心代码片段

% 定义频率范围 (20 Hz – 20000 Hz)
f = linspace(20, 20000, 1000)';

% O'Shaughnessy公式
mel_OS = 2595 * log10(1 + f/700);

% Fant公式
mel_Fant = 1000 * log2(1 + f/1000);

% Umesh & Cohen公式
A = 1000 / log(1 + 1000/700);
mel_UC = A * log(1 + f/700);

% 线性映射(对比基准)
mel_linear = f;

可视化结果解读

运行代码后,你将看到四张关键图表:

图1:双对数坐标下的主对比图

在这里插入图片描述

  • 线性映射(黑色点线)表现为斜率为1的完美直线:

    log

    m

    =

    log

    f

    \\log m = \\log f

    logm=logf

  • 三条Mel曲线均向下弯曲,表明高频段存在明显的感知压缩
  • 所有曲线在

    (

    1000

     Hz

    ,

    1000

     mel

    )

    (1000\\text{ Hz}, 1000\\text{ mel})

    (1000 Hz,1000 mel)处交汇

图2-3:差距分析图 在这里插入图片描述

  • Fant vs O’Shaughnessy:绝对差距可达~100 mel(20 kHz处),相对差距约+15%
  • U&C vs O’Shaughnessy:绝对差距<2 mel,平均仅0.04 mel——听觉上完全等效

图4:幂律特性分析 在这里插入图片描述

通过拟合不同频段的幂律指数

log

m

=

α

log

f

+

β

\\log m = \\alpha \\log f + \\beta

logm=αlogf+β

频段幂律指数

α

\\alpha

α含义

低频 (20-200 Hz) ≈0.9 接近线性感知
高频 (5-20 kHz) ≈0.5-0.6 显著压缩

2.4 双对数坐标的物理意义

为什么使用双对数坐标?因为它在数学上能直接揭示幂律关系:

  • 如果

    m

    f

    α

    m \\propto f^\\alpha

    mfα,则

    log

    m

    =

    α

    log

    f

    +

    常数

    \\log m = \\alpha \\log f + \\text{常数}

    logm=αlogf+常数

  • 在双对数图中,幂律关系表现为直线,斜率即为幂指数

    α

    \\alpha

    α

Mel尺度在双对数图中不是直线,说明它的幂指数随频率变化——这正是人耳听觉非线性的数学本质。


三、音乐家的“内心音准曲线”:超越Mel尺度的认知结构

3.1 问题的提出

训练有素的音乐家与普通听众的听觉感知是否相同?一个训练有素的音乐家究竟是“听到了Mel”还是“听到了Hz”?他们对音程大小的判断是否遵循Mel尺度的规则?

答案是:都不是。音乐家感知的是一个高度内化的、与频率对数成正比的“音程关系空间”。

三、最直接的相关研究:韩宝强《音乐家的音准感》

1992年,中国音乐学家韩宝强发表了题为《音乐家的音准感》的经典论文,通过系统的心理物理学实验,首次揭示了对音乐家内心音准感知的系统性认识。

3.1 两种音准感的区分

韩宝强将音准感分为两个层次:

同一性音准感:判断两个声音“音高是否相同”的能力。这主要依赖生理听觉,标准相对唯一,与普通听众的感知较为接近。

相对性音准感:判断“音程或音高关系是否准确”的能力。这正是“内心音准曲线”的核心——它不是一个固定的物理刻度,而是一个基于音级、调式、和声功能动态调整的心理坐标系。

3.2 关键发现:音差分辨阈(JND)

研究发现,音乐家能够感知的最小音高差异约为2-4音分(在440Hz附近),远小于十二平均律的一个半音(100音分)。这表明音乐家的内心听觉具有极高的精度。

但更重要的是,这个阈值不是恒定的:

  • 音区依赖:中音区比高、低音区更敏感
  • 音色依赖:弦乐音色比纯音更容易判断
  • 上下文依赖:调性、和声进行、旋律走向等音乐逻辑会“引导”对音准的预期
3.3 影响内心音准曲线的维度

韩宝强的研究揭示了多个影响维度:

  • 音区效应:不同频率范围内,对同样音分偏差的感知敏感度不同
  • 音色效应:泛音结构丰富的音色提供更多音高线索
  • 音乐上下文效应:一个在C大调中听起来“准”的#F,在G大调中可能听起来“不准”

3.2 Mel尺度 vs. 音乐家的音高标尺

这是理解问题的关键:Mel尺度和音乐家的音高感知是两把完全不同的标尺。

特性Mel尺度音乐家的音高标尺
映射基础 频率对响度的等感应曲线 频率的对数 (log f)
核心目的 描述单音“高度”的绝对感觉 量化音程关系
度量单位 Mel(非线性) 音分、半音、八度(纯对数)
函数形式 对数+线性混合 纯对数:

p

=

1200

log

2

(

f

/

f

ref

)

p = 1200 \\cdot \\log_2(f/f_{\\text{ref}})

p=1200log2(f/fref)

低频行为 接近线性 始终是对数
高频行为 对数压缩 依然是对数
八度恒常性 ❌ 不具有 ✅ 具有(100Hz→200Hz = 2000Hz→4000Hz)

3.3 实验证据:音乐家如何判断音程?

核心发现:音乐家判断音程时,完全遵循频率比规则而非Mel规则。

  • Mel规则预测:低频八度(100→200Hz)应感觉大于高频八度(2000→4000Hz)
  • 音乐家实际表现:经过训练的乐手会判断两个八度在“音乐距离”上基本相等

这说明,长期训练极大地强化了“对数标尺”在大脑中的表征,压制了原始的、非线性的感知倾向。

3.4 神经科学层面的证据

脑干的选择性增强

一项2009年的神经科学研究(Wong et al.)发现:

  • 音乐家的脑干会自动增强对和声音程中上方声部和组合泛音的神经编码
  • 这种增强在非音乐家身上并不明显
  • 结论:长期训练重塑了从脑干开始的听觉系统,使其对“符合音乐规则”的声音更加敏锐
绝对音感者的音色依赖

对拥有绝对音感(AP,Absolute Pitch)的音乐家的研究表明:

  • 他们的音高识别能力高度依赖于熟悉的音色(如钢琴)
  • 面对不熟悉的合成音色时,反应速度和瞳孔扩张程度(认知负荷指标)显著变差
  • 结论:AP者的“内心音准曲线”更多是基于特定音色-音高标签对,而非抽象的频率感知

3.5 跨文化视角:印度卡纳提克音乐的研究

一项针对印度卡纳提克音乐(Carnatic music)演奏者的研究发现:

  • 该风格特有的复杂连续音高波动(gamakas)要求极高的音高精度
  • 演奏者的误差标准差仅为9-15音分
  • 结论:“内心音准曲线”已内化了复杂的风格规则,具有高度的文化特异性

3.6 总结:什么是“音乐家的内心音准曲线”?

综合现有研究,我们可以提炼出以下核心观点:

  • 它不是Mel尺度:Mel尺度描述的是普通人对于单音“音高高度”的边际递减感觉。而音乐家的“内心音准曲线”是一个用于判断音程关系、和声协和性、旋律指向性的高度结构化认知地图。

  • 核心是“关系”而非“绝对值”:这条“曲线”的核心坐标系是对数频率(音分、半音),因为它需要保证不同八度间的音程在感知上“相等”。

  • 高度的可塑性和专业性:

    • 随训练乐器变化(低音乐器演奏者更擅长处理低音声部)
    • 随音乐风格变化(卡纳提克音乐家对连续音高波动有极高精度)

  • 四、综合讨论:两条曲线的交汇与分野

    4.1 为什么Mel尺度“不够用”?

    Mel尺度是为语音识别和心理声学设计的,它的目标是描述普通听众对单音高度的平均感觉。对于音乐家而言:

    • 音乐感知的核心是关系(音程、和声、调性),而非绝对高度
    • Mel尺度无法解释八度恒常性(所有八度的纯五度听起来“一样大”)
    • Mel尺度的低频线性段与音乐家的对数感知存在明显冲突

    4.2 对数频率:真正的“音乐标尺”

    音乐家的内心音准曲线的数学核心是对数频率:

    音分

    =

    1200

    log

    2

    (

    f

    f

    ref

    )

    \\text{音分} = 1200 \\cdot \\log_2\\left(\\frac{f}{f_{\\text{ref}}}\\right)

    音分=1200log2(freff)

    这条曲线:

    • 是严格的直线(在双对数或半对数坐标下)
    • 保证了八度的恒常性(频率翻倍 = 1200音分)
    • 与Mel尺度的高频段趋势一致,但低频段完全不同

    4.3 可视化对比:把两条曲线放在一起

    特征Mel尺度对数频率(音分)线性映射
    双对数图形态 向下弯曲 直线(斜率<1?不对,音分是线性的) 斜率为1的直线
    低频(20-200Hz) 接近线性 强压缩 线性
    高频(5-20kHz) 强压缩 强压缩(与Mel一致) 线性
    八度恒常性
    音乐家的内心标尺 部分匹配(高频) 完全匹配 完全不匹配

    核心洞察:音乐家的内心音准曲线在高频段与Mel尺度一致(都是对数压缩),但在低频段与Mel尺度分道扬镳(Mel接近线性,音乐家依然是对数)。


    五、结论

  • Mel尺度描述了普通人音高感知的“平均规律”,在双对数坐标下呈现变斜率特征(低频α≈0.9,高频α≈0.5-0.6),是心理声学和语音识别的有效工具。

  • 音乐家的内心音准曲线并非一条固定曲线,而是一个动态的、多维度的心理音高空间,其核心坐标系是对数频率,并整合了调性、和声、音色、声部角色等高层音乐规则。

  • 两者的本质区别:Mel尺度回答的是“这个音有多高”,音乐家的标尺回答的是“这个音与其他音是什么关系”。

  • 研究启示:韩宝强的工作为理解音乐家的听觉认知提供了基础框架,而神经科学和跨文化研究则揭示了这一框架的生理实现和文化特异性。未来的研究需要进一步探索“内心音准曲线”的个体差异、可塑性及其神经基础。


  • 附录:完整MATLAB代码

    %% Mel尺度公式对比与差距分析 + 线性频率-音高对比(双对数坐标版)
    % 包含三个经典映射公式:O'Shaughnessy (1987), Fant (1949/1973), Umesh & Cohen (1999)
    % 新增:线性频率-音高映射作为对比,使用双对数坐标展示幂律关系
    % 所有文字注释通过命令行窗口输出,图片仅保留图例和简洁标题

    clear; clc; close all;

    %% 1. 定义频率范围 (20 Hz – 20000 Hz,人耳主要范围)
    f = linspace(20, 20000, 1000)'; % 列向量

    %% 2. 定义三个 Mel 尺度公式

    % (1) O'Shaughnessy 公式 (1987) – 工程、语音领域最通用标准式
    % m = 2595 * log10(1 + f/700)
    mel_OS = 2595 * log10(1 + f/700);

    % (2) Fant 公式 (1949/1973) – 原始采用以2为底对数,学界存在ln/log10变体
    % m = 1000 * log2(1 + f/1000)
    mel_Fant = 1000 * log2(1 + f/1000);

    % (3) Umesh & Cohen 公式 (1999) – 严格约束1 kHz = 1000 mel的自然对数形式
    % m = A * ln(1 + f/700), 其中 A = 1000 / ln(1 + 1000/700)
    ref_f = 1000;
    ref_mel = 1000;
    A = ref_mel / log(1 + ref_f/700);
    mel_UC = A * log(1 + f/700);

    % (4) 线性频率-音高映射(作为对比基准)
    % 最简单的线性假设:音高与频率成正比,且 1000 Hz -> 1000 unit
    mel_linear = f; % 线性映射:m = f

    %% 3. 命令行窗口输出:各公式详细介绍与优缺点
    fprintf('==================== Mel尺度公式详细信息 ====================\\n\\n');

    fprintf('【1】O''Shaughnessy 公式 (1987)\\n');
    fprintf(' 数学表达式: m = 2595 * log10(1 + f/700)\\n');
    fprintf(' 提出者: Douglas O''Shaughnessy\\n');
    fprintf(' 优点: 最常用,与大量心理声学数据拟合较好;简单;在语音识别、音频特征(MFCC)中广泛使用\\n');
    fprintf(' 缺点: 低频段(<500 Hz)的分辨率略粗糙;常数2595和700源自近似,非精确解析解\\n');
    fprintf(' 基准点校验: f=1000 Hz 时, m = %.2f mel (理论目标1000 mel)\\n\\n', mel_OS(500));

    fprintf('【2】Fant 公式 (1949/1973)\\n');
    fprintf(' 数学表达式: m = 1000 * log2(1 + f/1000)\\n');
    fprintf(' 提出者: Gunnar Fant\\n');
    fprintf(' 优点: 历史经典,早期语音合成/分析常用;在1kHz以下与听觉滤波器组匹配尚可;形式简洁\\n');
    fprintf(' 缺点: 高频(>5kHz)误差较大;以1000 Hz为基准而非主观中点,现代使用较少\\n');
    fprintf(' 基准点校验: f=1000 Hz 时, m = %.2f mel (严格满足1000 mel)\\n\\n', mel_Fant(500));

    fprintf('【3】Umesh & Cohen 公式 (1999)\\n');
    fprintf(' 数学表达式: m = 1000/ln(1+1000/700) * ln(1+f/700)\\n');
    fprintf(' 提出者: S. Umesh 和 L. Cohen\\n');
    fprintf(' 优点: 精确满足 m(1000)=1000;整个频率范围内与主观尺度误差最小;数学自洽性强\\n');
    fprintf(' 缺点: 需计算自然对数,稍复杂(现代计算机可忽略);未直接提供反函数解析式(但可迭代求解)\\n');
    fprintf(' 基准点校验: f=1000 Hz 时, m = %.2f mel (精确满足1000 mel)\\n\\n', mel_UC(500));

    fprintf('【4】线性映射 (理论对比基准)\\n');
    fprintf(' 数学表达式: m = f\\n');
    fprintf(' 提出者: 朴素假设\\n');
    fprintf(' 优点: 最简单直观的映射\\n');
    fprintf(' 缺点: 完全不符合人耳对数听觉特性;低频分辨能力严重不足,高频过度敏感\\n');
    fprintf(' 基准点校验: f=1000 Hz 时, m = 1000 unit\\n\\n');

    fprintf('==================== 公式对比总结(双对数坐标视角) ====================\\n');
    fprintf('1. 在双对数坐标下,线性映射 m = f 表现为斜率为1的直线(log m = log f)\\n');
    fprintf('2. Mel尺度在双对数坐标下呈现向下弯曲的曲线,低频段接近线性,高频段明显压缩\\n');
    fprintf('3. 这反映了人耳听觉的非线性压缩特性:低频分辨精细,高频分辨粗糙\\n');
    fprintf('4. 双对数坐标能同时展示低频和高频的幂律关系,比半对数坐标更全面\\n\\n');

    %% 4. 绘制主对比图(四个曲线:3 Mel + 1 线性)- 使用双对数坐标
    figure('Position', [100, 100, 950, 650]);

    % 双对数坐标绘图:loglog 同时将 x 和 y 轴设为对数坐标
    loglog(f, mel_OS, 'b-', 'LineWidth', 2.5); hold on;
    loglog(f, mel_Fant, 'r–', 'LineWidth', 2);
    loglog(f, mel_UC, 'g-.', 'LineWidth', 2);
    loglog(f, mel_linear, 'k:', 'LineWidth', 2);

    grid on;
    xlabel('频率 f (Hz) – 对数坐标', 'FontSize', 13);
    ylabel('音高感知尺度 (mel 或 线性单位) – 对数坐标', 'FontSize', 13);
    title(sprintf('双对数坐标下的Mel尺度 vs 线性频率映射对比\\nO''Shaughnessy (1987) | Fant (1949) | Umesh & Cohen (1999) | 线性映射 (m=f)'),
    'FontSize', 11, 'Interpreter', 'none');
    legend({'O''Shaughnessy (1987): m = 2595·log_{10}(1+f/700)',
    'Fant (1949): m = 1000·log_{2}(1+f/1000)',
    'Umesh & Cohen (1999): m = A·ln(1+f/700), 满足 m(1000)=1000',
    '线性映射 (对比基准): m = f (斜率为1的直线)'},
    'Location', 'southeast', 'FontSize', 9.5);

    % 设置坐标轴范围
    xlim([20, 20000]);
    ylim([10, 20000]); % 双对数坐标下,下限需要 >0

    % 标注关键点:1000 Hz 处所有曲线交汇
    xline(1000, 'k–', 'LineWidth', 1, 'Alpha', 0.5, 'HandleVisibility', 'off');
    yline(1000, 'k–', 'LineWidth', 1, 'Alpha', 0.5, 'HandleVisibility', 'off');
    text(1200, 1500, '交汇点 (1000 Hz, 1000 mel)', 'FontSize', 9, 'Color', 'k');

    % 添加辅助参考线:斜率为1的直线(验证线性映射)
    % 已经在图中以黑色点线显示

    % 添加标注:解释双对数坐标下的物理意义
    text(25, 15000, '低频区:Mel尺度接近线性', 'FontSize', 8, 'Color', 'b', 'BackgroundColor', 'w');
    text(5000, 80, '高频区:Mel尺度明显压缩', 'FontSize', 8, 'Color', 'b', 'BackgroundColor', 'w');

    %% 5. 绘制差距图(以 O'Shaughnessy 为参考)
    figure('Position', [100, 100, 900, 650]);

    % 子图1: Fant – O'Shaughnessy 绝对差距(半对数坐标,因为差距可为负/零)
    subplot(2,1,1);
    semilogx(f, mel_Fant mel_OS, 'r-', 'LineWidth', 1.5); grid on;
    xlabel('频率 f (Hz) – 对数坐标', 'FontSize', 11);
    ylabel('\\Delta Mel (Fant – O''Shaughnessy)', 'FontSize', 11);
    title('Fant 公式相对于 O''Shaughnessy 公式的绝对差距', 'FontSize', 11);
    xlim([20, 20000]);
    ylim([300, 150]);
    yline(0, 'k–', 'LineWidth', 1);
    legend('Fant – O''S', 'Location', 'best', 'FontSize', 10);

    % 子图2: Umesh & Cohen – O'Shaughnessy 绝对差距(半对数坐标)
    subplot(2,1,2);
    semilogx(f, mel_UC mel_OS, 'g-', 'LineWidth', 1.5); grid on;
    xlabel('频率 f (Hz) – 对数坐标', 'FontSize', 11);
    ylabel('\\Delta Mel (U&C – O''Shaughnessy)', 'FontSize', 11);
    title('Umesh & Cohen 公式相对于 O''Shaughnessy 公式的绝对差距', 'FontSize', 11);
    xlim([20, 20000]);
    ylim([2, 2]); % 缩小范围更清晰地显示微小差异
    yline(0, 'k–', 'LineWidth', 1);
    legend('U&C – O''S', 'Location', 'best', 'FontSize', 10);

    sgtitle('不同 Mel 尺度公式与 O''Shaughnessy 标准公式的绝对差距对比', 'FontSize', 12);

    %% 6. 相对百分比差距图(半对数坐标)
    figure('Position', [100, 100, 900, 500]);
    relative_diff_fant = 100 * (mel_Fant mel_OS) ./ mel_OS;
    relative_diff_uc = 100 * (mel_UC mel_OS) ./ mel_OS;
    semilogx(f, relative_diff_fant, 'r-', 'LineWidth', 1.5); hold on;
    semilogx(f, relative_diff_uc, 'g–', 'LineWidth', 1.5);
    grid on;
    xlabel('频率 f (Hz) – 对数坐标', 'FontSize', 12);
    ylabel('相对差距 (%)', 'FontSize', 12);
    title('各公式相对于 O''Shaughnessy 公式的相对百分比差距', 'FontSize', 12);
    xlim([20, 20000]);
    ylim([5, 20]);
    legend('Fant 相对 O''S', 'Umesh & Cohen 相对 O''S', 'Location', 'best', 'FontSize', 11);
    yline(0, 'k-', 'LineWidth', 1);

    %% 7. 新增:双对数坐标下的幂律关系分析图
    figure('Position', [100, 100, 1000, 550]);

    % 左子图:双对数坐标展示完整范围
    subplot(1,2,1);
    loglog(f, mel_OS, 'b-', 'LineWidth', 2.5); hold on;
    loglog(f, mel_linear, 'k:', 'LineWidth', 2);
    grid on;
    xlabel('频率 f (Hz) – 对数坐标', 'FontSize', 11);
    ylabel('音高感知尺度 – 对数坐标', 'FontSize', 11);
    title('双对数坐标:Mel尺度 vs 线性映射', 'FontSize', 11);
    legend('Mel尺度 (O''Shaughnessy)', '线性映射 (m=f, 斜率=1)', 'Location', 'southeast', 'FontSize', 9);
    xlim([20, 20000]);
    ylim([10, 20000]);

    % 添加斜率参考线
    f_ref = [100, 10000];
    mel_power_law = 1000 * (f_ref/1000).^0.6; % 幂律近似
    loglog(f_ref, mel_power_law, 'c–', 'LineWidth', 1.5, 'HandleVisibility', 'off');
    text(120, 3000, '幂律近似: m ∝ f^{0.6}', 'FontSize', 8, 'Color', 'c');

    % 右子图:展示低频段的双对数细节(20-2000 Hz)
    subplot(1,2,2);
    f_low = f(f <= 2000);
    mel_OS_low = mel_OS(f <= 2000);
    mel_linear_low = mel_linear(f <= 2000);

    loglog(f_low, mel_OS_low, 'b-', 'LineWidth', 2.5); hold on;
    loglog(f_low, mel_linear_low, 'k:', 'LineWidth', 2);
    grid on;
    xlabel('频率 f (Hz) – 对数坐标', 'FontSize', 11);
    ylabel('音高感知尺度 – 对数坐标', 'FontSize', 11);
    title('低频段(20-2000Hz)双对数细节:Mel接近线性但略有压缩', 'FontSize', 10);
    legend('Mel尺度', '线性映射', 'Location', 'northwest', 'FontSize', 9);
    xlim([20, 2000]);
    ylim([20, 2000]);

    % 添加标注:说明低频行为
    text(25, 150, '低频区:Mel尺度斜率≈0.9', 'FontSize', 8, 'Color', 'b', 'BackgroundColor', 'w');
    text(400, 100, '仍低于线性映射', 'FontSize', 8, 'Color', 'b');

    sgtitle('双对数坐标下的Mel尺度幂律特性分析', 'FontSize', 12);

    %% 8. 命令行窗口输出:关键频点验算结果(增加线性映射列)
    fprintf('\\n==================== 关键频点验算结果 ====================\\n');
    fprintf('频率(Hz)\\tO''Shaughnessy(mel)\\tFant(mel)\\tU&C(mel)\\t线性映射\\n');
    chk_points = [20, 100, 500, 1000, 3000, 8000, 20000];
    for i = 1:length(chk_points)
    idx = find(f >= chk_points(i), 1, 'first');
    fprintf('%6d Hz\\t\\t%8.2f\\t\\t%8.2f\\t%8.2f\\t%8.0f\\n',
    chk_points(i), mel_OS(idx), mel_Fant(idx), mel_UC(idx), f(idx));
    end

    fprintf('\\n==================== 双对数坐标下的幂律分析 ====================\\n');
    % 计算低频段和高频段的等效幂律指数
    idx_low = f >= 20 & f <= 200;
    idx_high = f >= 5000 & f <= 20000;

    % 拟合 log(mel) = a * log(f) + b
    p_low = polyfit(log(f(idx_low)), log(mel_OS(idx_low)), 1);
    p_high = polyfit(log(f(idx_high)), log(mel_OS(idx_high)), 1);

    fprintf('低频段 (20-200 Hz) 的等效幂律指数: %.3f\\n', p_low(1));
    fprintf('高频段 (5-20 kHz) 的等效幂律指数: %.3f\\n', p_high(1));
    fprintf('解释:指数越接近1,越接近线性;指数越小,压缩越强\\n');
    fprintf('人耳在低频段接近线性感知(指数≈%.3f),在高频段显著压缩(指数≈%.3f)\\n', p_low(1), p_high(1));

    fprintf('\\n==================== 差距统计 ====================\\n');
    fprintf('Fant公式 vs O''S公式:最大绝对差距 = %.2f mel (发生在 %.0f Hz附近)\\n',
    max(abs(mel_Fant mel_OS)), f(abs(mel_Fant mel_OS) == max(abs(mel_Fant mel_OS))));
    fprintf('U&C公式 vs O''S公式:最大绝对差距 = %.4f mel (发生在 %.0f Hz附近)\\n',
    max(abs(mel_UC mel_OS)), f(abs(mel_UC mel_OS) == max(abs(mel_UC mel_OS))));
    fprintf('U&C公式 vs O''S公式:平均绝对差距 = %.4f mel\\n', mean(abs(mel_UC mel_OS)));

    % 新增:线性 vs Mel 的差距统计
    fprintf('\\n==================== 线性 vs Mel 对比统计(双对数视角) ====================\\n');
    fprintf('线性映射 vs O''S公式 (20-20000Hz范围):\\n');
    fprintf(' 最大绝对差距 = %.0f unit (发生在 %.0f Hz,线性映射值=%.0f, Mel值=%.2f)\\n',
    max(abs(mel_linear mel_OS)),
    f(abs(mel_linear mel_OS) == max(abs(mel_linear mel_OS))),
    max(mel_linear), mel_OS(mel_linear == max(mel_linear)));
    fprintf(' 在双对数坐标下,线性映射是斜率为1的直线,Mel尺度是向下弯曲的曲线\\n');
    fprintf(' 低频段(20-200Hz) Mel斜率≈%.3f,高频段(5-20kHz) Mel斜率≈%.3f\\n', p_low(1), p_high(1));

    fprintf('\\n==================== 结论 ====================\\n');
    fprintf('1. 双对数坐标揭示了Mel尺度的本质:在不同频段具有不同的幂律指数\\n');
    fprintf('2. 线性映射 (m=f) 在双对数坐标下是斜率为1的直线,完全不匹配人耳听觉\\n');
    fprintf('3. Umesh & Cohen公式与O''Shaughnessy公式差异极小(平均<1 mel),听觉上完全等效\\n');
    fprintf('4. Fant公式偏离较大,现代应用中已较少直接使用\\n');
    fprintf('5. O''Shaughnessy公式仍是MFCC等特征提取的首选\\n');
    fprintf('6. 双对数坐标同时展示了低频和高频的特性,比半对数坐标更适合分析幂律关系\\n');


    参考文献

  • Stevens, S. S., Volkmann, J., & Newman, E. B. (1937). A scale for the measurement of the psychological magnitude pitch. The Journal of the Acoustical Society of America.

  • O’Shaughnessy, D. (1987). Speech Communication: Human and Machine. Addison-Wesley.

  • Fant, G. (1949). Analysis of the Swedish vowels. Speech Transmission Laboratory, Quarterly Progress and Status Report.

  • Umesh, S., & Cohen, L. (1999). A simple and precise method for computing the mel frequency scale. IEEE Signal Processing Letters.

  • 韩宝强. (1992). 音乐家的音准感——一个心理物理学的问题. 中国音乐学.

  • Wong, P. C. M., Skoe, E., Russo, N. M., Dees, T., & Kraus, N. (2007). Musical experience shapes human brainstem encoding of linguistic pitch patterns. Nature Neuroscience.


  • 本文为科普性质的技术总结,旨在架起心理声学与音乐认知之间的桥梁。欢迎批评指正。

    赞(0)
    未经允许不得转载:171主机测评 » 【硬科普】从Mel尺度到内心音准曲线:人耳如何感知音高?
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址