头传递函数方向音频小程序

上传单声道或多声道音频,选择来波方位角和仰角,程序用左右耳 FIR 滤波器模拟声源到达人耳的时间差、强度差和频谱线索,并输出双声道方向音频。

当前音频 未载入

1. 载入音频

默认音频为同目录歌曲截取并嵌入的前 5 秒;多声道音频会先做等功率叠加得到单声道。建议佩戴耳机试听,外放会削弱方向感。

采样率 --
时长 --
峰值 --

2. 设置来波方向

方位角约定:0° 为正前方,90° 为右侧,-90° 为左侧,180° 或 -180° 为后方。MIT KEMAR 数据支持 -40° 到 90° 仰角。

可在 MIT KEMAR 实测 HRIR 与参数化HRTF近似法之间切换。MIT 模式按实测 HRIR 原样处理,不使用近似线索强度;参数化HRTF近似法用该强度同时调节 ITD、ILD 和简化耳廓频谱线索。

方向与 FIR 可视化

声源方位

可在圆盘上点击或拖动来设置角度。

左右耳 HRIR / FIR

左耳 FIR 右耳 FIR

单声道波形预览

主观方向听辨测试

程序会用 MIT KEMAR 实测 HRIR 随机生成方位角和俯仰角。你根据听感输入两个角度,系统分别计算方位误差和俯仰误差。

当前轮次 0 / 0
平均误差(方位/俯仰) --
总分 --

本测试固定使用 MIT KEMAR 实测 HRIR,随机改变方位角和俯仰角。系统分别计算方位角误差和俯仰角误差,再合成为总分;同时统计前后混淆。

测试面板

你的判断方向

测试记录

    小程序功能说明

    1. 点击“载入音频”上传一段音频,也可以点击“生成测试音”快速体验。
    2. 用滑杆、数值框或方向圆盘设置来波角度。
    3. 点击“生成双声道”,程序生成左右耳 FIR 并把单声道音频卷积为双声道音频。
    4. 点击“试听输出”用耳机听方向效果,或点击“下载 WAV”保存结果。
    5. 进入“听辨测试”,开始随机方位测试,播放后输入自己听到的方向,系统自动评分。

    核心模型

    本程序提供两种 HRTF 来源:MIT Media Lab 的 KEMAR 人工头实测 HRIR(包含 compact 数据库中全部 elevation 层),以及一个可解释的参数化HRTF近似法。MIT 数据的 azimuth 间隔会随 elevation 改变,本程序按实际测量网格做方位角插值和仰角插值;左侧角度由右侧实测数据交换左右耳得到。

    MIT: measured HRIR, elevation -40° to 90°, 128 taps per ear Parametric: generated HRIR with ITD, ILD and simple pinna cues ITD: source at right -> left ear delayed, right ear earlier ILD: far ear attenuated more, especially for side sources Pinna: short delayed taps create front/back spectral notches left[n] = mono[n] * h_left[n, angle] right[n] = mono[n] * h_right[n, angle]

    其中 * 表示卷积,h_lefth_right 就是界面中绘制的两个 FIR 滤波器。

    听辨量化指标

    本程序采用声源定位实验中常用的角误差思想:方位角比较真实角度和用户判断角度在圆周上的最小夹角,俯仰角比较两者的绝对差。额外记录前后混淆,用于观察 HRTF 中耳廓频谱线索是否容易被用户感知。

    angular_error = min(|target - guess|, 360 - |target - guess|) elevation_error = |target_elevation - guess_elevation| azimuth_score = max(0, 100 * (1 - angular_error / 90)) elevation_score = max(0, 100 * (1 - elevation_error / 60)) round_score = 0.7 * azimuth_score + 0.3 * elevation_score

    参数化近似推导

    参数化HRTF近似法不是实测数据库,而是把 HRTF 拆成几个可解释的方向线索并组合成左右耳 FIR。程序先用方位角估计双耳时间差 ITD,再用头影效应估计双耳强度差 ILD,最后加入少量短延迟抽头,粗略模拟耳廓带来的前后频谱差异。

    side = sin(azimuth) front = cos(azimuth) ITD_samples = 0.00068 * sampleRate * side ILD_shadow_dB = 18 * |side|^1.25 * cue_strength h_left = fractional_delay(left_delay) * shape_left h_right = fractional_delay(right_delay) * shape_right

    适用与局限

    它适合作为专业知识点的交互演示:能看见 FIR,能听见方向变化,也能做简单主观测试。局限是没有使用个体化 HRTF 数据库,因此前后、上下方向的真实感不如实测模型;不同耳机、音频素材和听者个体差异都会影响结果。

    处理中...
    📊 已访问