logo头像
Snippet 博客主题

用意念播放音乐

  
  有没有那样一天,可以用大脑的意念来做一些事情,比如播放音乐,打开门等。用看不见的脑电波来控制设备,是不是很神奇。

功能

用意念打开音响并播放一段音乐

工具

  • 脑立方蓝牙传感器
  • 电脑
  • 蓝牙音箱
  • Matlab软件

方法

流程图

方案流程图

  通过BCI脑-机接口技术以及BP神经网络算法,实现对脑电信号的数据采集、特征熵值提取、分析处理以及对外部设备的控制,整体方案设计流程为:

(1) 脑电信号数据:基于脑电信号模式识别的远程遥控应用是对想象左右手运动(对应蓝牙音箱连接或断开)的二分类问题。首先采集受试者的脑电信号数据,共采集两组脑电信号数据:A组为想象左手运动(蓝牙音箱连接),B组为想象右手运动(蓝牙音箱断开)。

采集的样本信号

(2) 信号特征熵值提取:将脑电信号alpha波、beta波和gamma波进行数据归一化处理。其中alpha波与放松和冥想状态有关,beta波与思想专注状态有关,gamma波与某些感应的记忆相关的状态有关。将提取到的脑电波数据(三种波形各两组,共六组)分别进行熵值运算得到特征值矩阵。把熵值作为神经网络的输入,确定神经网络的预期输出,基于其特征熵值矩阵进行神经网络训练,确定神经网络的模型参数。

(3) 神经网络训练:创建BP神经网络,用带标签的样本数据训练BP神经网络模型的参数权值。
  输入层神经元个数:特征提取采用基于脑电信号求熵值的方法,得到6组熵值,因此网络的输入层神经元个数为 6 个。
  输出层神经元个数:BP神经网络输出层的神经元个数依据所需要识别的特征确定,输出层神经元个数确定为1。
  隐含层层数:3。
  隐含层神经元个数:采用经验公式与实验相结合的方式来确定。对于由m 个输入神经元、 n 个输出神经元的神经网络,其隐含层神经元的个数可以根据如下经验公式进行确定,隐含层神经个数确定为13。
$$h=\sqrt{(n+m)+a}, a∈[1,10]$$

(4) 网络测试验证:将特征熵值数据的测试集,载入已经训练好的BP神经网络对其进行测试,最后将预测输出结果与实际期待结果进行仿真对比,进而检查网络对其分类的正确性。由于A组与B组想象的是相反的运动,所以测试集经过神经网络后应得到相反的结果。若测试集的准确率较低,则增加采集脑电波信号,增加训练集数据量,采集大量的脑电信号重新训练网络。
训练结果

(5) 人机交互:想象抬左手对应播放音乐,右手反之。

1
2
3
4
b = Bluetooth('HUAWEI AM08',3); #创建蓝牙串口对象
[y,Fs] = audioread('D:\Music\我和我的祖国.mp3'); #创建音乐对象
fopen(b); #打开蓝牙
sound(y,Fs); #播放音乐

总结

成功用意念控制外设,完成预期目标。缺陷是只能实现简单二分类,网络功能简单。