冥想对声音觉知敏感度的影响实验设计

冥想对声音觉知敏感度的影响实验设计

一、实验核心目标 验证 “短期冥想干预” 是否能提升个体对声音的觉知敏感度(包括听觉阈值降低、声音细节辨别能力提升、主观觉察度提高)。 二、实验对象与分组 维度 要求与说明 样本量 共 40 人(每组 20 人),年龄 18-35 岁,无听力障碍、无冥想经验(排除基础差异) 分组方式 随机对照分组:1. 实验组:接受 7 天冥想干预2. 对照组:不进行冥想,日常活动不变 控制变量 两组实验前听力基础、每日噪音暴露时间(要求≤2 小时 / 天,如避免音乐会、施工环境)、睡眠时长(≥7 小时 / 天)一致

三、关键测量指标(前测 / 后测一致)

  1. 客观声音感知指标(量化核心) 指标名称 测量方法 听觉阈值(Hz) 使用前文的 “Python 声音生成工具”,测试能听到的最低音量纯音(频率选取 250Hz、1000Hz、4000Hz,取 3 次平均值) 声音频率辨别精度 播放两组相近频率纯音(如 1000Hz vs 1010Hz),记录正确辨别 “频率高低” 的准确率(共 20 组,计算正确率) 声音时长辨别精度 播放两组相近时长纯音(如 1s vs 1.2s),记录正确辨别 “时长长短” 的准确率(共 20 组,计算正确率)

  2. 主观声音觉知指标 采用 “声音觉知量表”(1-7 分 Likert 评分,1 = 完全没察觉,7 = 非常清晰察觉),测试维度包括: 对环境低频噪音(如空调声)的觉察度 对声音细节(如脚步声轻重)的分辨度 听到声音后的 “专注度”(是否分心) 四、实验流程(共 9 天) 时间节点 实验组操作 对照组操作 第 1 天(前测) 完成客观指标测试(听觉阈值、频率 / 时长辨别)+ 主观量表填写 同实验组(确保前测基础一致) 第 2-8 天(干预) 每天固定时间(如晚上 8 点)进行 15 分钟冥想:采用 “声音觉知冥想”:闭眼专注听环境音,察觉声音的 “开始 – 变化 – 消失”,不刻意判断 不进行冥想,保持日常活动不变 第 9 天(后测) 重复第 1 天的客观指标测试 + 主观量表填写,且额外填写 “冥想体验反馈表”(仅实验组) 同实验组(完成客观 + 主观后测)

五、冥想干预标准化方案(仅实验组) 冥想工具:使用统一的冥想音频(15 分钟,无引导语,仅背景白噪音,避免语言干扰) 冥想环境:要求在安静房间(环境噪音≤30 分贝,可用手机分贝仪 APP 监测),坐姿舒适,避免中途打断 依从性控制:每天提交冥想打卡记录(拍照或录音证明完成),未完成≥2 天者剔除实验数据 六、数据处理与结果判断 数据对比:计算两组 “后测 – 前测” 的指标变化值,如: 听觉阈值变化:后测阈值(dB)- 前测阈值(dB)(负值表示阈值降低,敏感度提升) 辨别准确率变化:后测正确率 – 前测正确率(正值表示能力提升) 统计分析:用 SPSS 进行独立样本 t 检验,若实验组的 “指标变化值” 显著高于对照组(p<0.05),则证明冥想对声音觉知敏感度有提升效果。 七、注意事项 前测 / 后测需在同一房间、同一时间段进行(控制环境变量) 测试时告知被试 “无需追求‘正确答案’,仅按真实感知作答”,避免主观偏差 若被试实验期间出现感冒、耳鸣等影响听力的情况,剔除其数据

代码

import numpy as np import sounddevice as sd import tkinter as tk from tkinter import ttk, messagebox

class HearingTestApp: def init(self, root): self.root = root self.root.title(“听力范围测试”) self.root.geometry(“500×300”) self.root.resizable(False, False)

    # 声音参数
    self.frequency = 1000  # 默认频率1000Hz
    self.duration = 1.0    # 声音持续时间(秒)
    self.sample_rate = 44100  # 采样率

    # 创建UI元素
    self.create_widgets()

def create_widgets(self):
    # 标题
    title_label = ttk.Label(self.root, text="听力范围测试", font=("Arial", 16, "bold"))
    title_label.pack(pady=10)

    # 频率控制
    freq_frame = ttk.Frame(self.root)
    freq_frame.pack(pady=10, fill=tk.X, padx=20)

    ttk.Label(freq_frame, text="频率 (Hz):").pack(side=tk.LEFT, padx=5)

    self.freq_var = tk.StringVar(value=str(self.frequency))
    self.freq_entry = ttk.Entry(freq_frame, textvariable=self.freq_var, width=10)
    self.freq_entry.pack(side=tk.LEFT, padx=5)

    # 频率滑块
    self.freq_slider = ttk.Scale(freq_frame, from_=20, to=20000, 
                                value=self.frequency, command=self.update_freq)
    self.freq_slider.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=5)

    # 常用频率按钮
    presets_frame = ttk.Frame(self.root)
    presets_frame.pack(pady=10)

    presets = [20, 50, 100, 250, 500, 1000, 2000, 4000, 8000, 12000, 16000, 20000]
    for freq in presets:
        ttk.Button(presets_frame, text=str(freq), 
                  command=lambda f=freq: self.set_frequency(f)).pack(side=tk.LEFT, padx=2)

    # 播放按钮
    self.play_button = ttk.Button(self.root, text="播放声音", command=self.play_tone)
    self.play_button.pack(pady=20)

    # 说明文本
    info_text = "说明:调整频率并点击播放按钮来测试听力范围。\n" \
               "大多数年轻人能听到20-20000Hz的声音,随着年龄增长高频听力会逐渐下降。"
    info_label = ttk.Label(self.root, text=info_text, justify=tk.LEFT)
    info_label.pack(padx=20, fill=tk.X)

def update_freq(self, value):
    """更新频率值"""
    self.frequency = int(float(value))
    self.freq_var.set(str(self.frequency))

def set_frequency(self, freq):
    """设置指定频率"""
    self.frequency = freq
    self.freq_var.set(str(self.frequency))
    self.freq_slider.set(freq)

def generate_tone(self):
    """生成指定频率的纯音"""
    # 生成时间数组
    t = np.linspace(0, self.duration, int(self.sample_rate * self.duration), endpoint=False)

    # 生成正弦波 (纯音)
    tone = 0.5 * np.sin(2 * np.pi * self.frequency * t)

    # 确保音频在[-1, 1]范围内
    tone = np.clip(tone, -1, 1)

    return tone

def play_tone(self):
    """播放生成的声音"""
    try:
        # 从输入框获取频率
        self.frequency = int(self.freq_var.get())

        # 验证频率范围
        if not (20 <= self.frequency <= 20000):
            messagebox.showerror("错误", "频率必须在20到20000之间")
            return

        # 更新滑块位置
        self.freq_slider.set(self.frequency)

        # 生成并播放声音
        tone = self.generate_tone()
        sd.play(tone, self.sample_rate)
        sd.wait()  # 等待声音播放完成

    except ValueError:
        messagebox.showerror("错误", "请输入有效的频率值")
    except Exception as e:
        messagebox.showerror("错误", f"播放失败: {str(e)}")

if name == “main“: try: root = tk.Tk() app = HearingTestApp(root) root.mainloop() except Exception as e: print(f”程序出错: {e}”)


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注