Meta 近期开放了 Brain2Qwerty v2。这套非侵入式脑机接口可以从 EEG(脑电图)或 MEG(脑磁图)信号中解码句子,评估中的平均词准确率达到 61%,而其他非侵入式方法约为 8%。这个差距让系统值得研究,但 61% 也意味着它离可靠输入法仍有明显距离。
61% 准确率意味着什么
脑信号到文本不是普通的语音识别问题。EEG 和 MEG 记录的是混合后的神经活动,信号会受到传感器位置、头部运动、眨眼、肌肉活动和环境噪声影响。模型需要从高噪声时序数据中提取模式,再将模式映射为字符、单词或句子。
61% 的平均词准确率说明 Brain2Qwerty v2 已经能恢复相当一部分句子结构,但不能直接理解为“十句话中有六句完全正确”。词级指标通常按单词统计,一句话中仍可能出现遗漏、替换和插入。例如:
参考文本: the patient needs a glass of water
解码文本: the patient needs glass water
这条结果保留了核心语义,却缺少两个词。对实验研究而言,它可能是有效输出;对医疗沟通、身份认证或设备控制而言,未经确认就执行则风险过高。
评估模型时还需要确认几个边界:测试对象是否出现在训练数据中,句子是否来自封闭词表,是否使用语言模型重排,以及 EEG 和 MEG 的结果是否分别报告。仅凭一个平均值,很难判断系统跨受试者、跨设备和跨会话的稳定性。
EEG 与 MEG 不是可互换的输入源
EEG 通过头皮电极记录电活动,设备相对容易部署,但信号空间分辨率和信噪比有限。MEG 测量神经活动产生的磁场,通常可以获得更细致的时空信息,但设备昂贵、体积大,对运行环境要求也更高。
因此,工程团队不应把 Brain2Qwerty 看成一个接收任意脑信号并返回文本的黑盒 API。实际流水线至少涉及:
- 采集原始 EEG 或 MEG 时间序列。
- 对信号进行滤波、伪迹处理、分段和标准化。
- 使用与采集模态匹配的模型生成文本候选。
- 用语言上下文重排候选,并保留置信度。
- 通过人工确认或受限命令集消费结果。
其中,预处理参数必须与训练过程保持一致。采样率、通道顺序或时间窗口发生变化,都可能造成输入分布偏移。把 MEG 模型直接接到 EEG 数据上,通常也不会得到可解释的结果。
可以这样实践:建立可复现的词错误率评估
下面的示例不是 Brain2Qwerty v2 的官方 API,而是一个可直接运行的最小评估脚本。它使用 Python 标准库计算词错误率(WER),并把 1 - WER 作为便于观察的词准确率。替换 samples 中的参考文本和模型输出,就能比较不同受试者、会话或信号模态。
from dataclasses import dataclass
@dataclass
class Sample:
subject: str
modality: str
reference: str
prediction: str
def edit_distance(reference: list[str], prediction: list[str]) -> int:
previous = list(range(len(prediction) + 1))
for i, ref_word in enumerate(reference, start=1):
current = [i]
for j, pred_word in enumerate(prediction, start=1):
current.append(min(
current[j - 1] + 1, # insertion
previous[j] + 1, # deletion
previous[j - 1] + (ref_word != pred_word),
))
previous = current
return previous[-1]
def evaluate(samples: list[Sample]) -> None:
total_errors = 0
total_reference_words = 0
for sample in samples:
reference = sample.reference.lower().split()
prediction = sample.prediction.lower().split()
errors = edit_distance(reference, prediction)
wer = errors / max(1, len(reference))
total_errors += errors
total_reference_words += len(reference)
print(
f"{sample.subject} {sample.modality}: "
f"WER={wer:.1%}, word_accuracy={max(0.0, 1 - wer):.1%}"
)
aggregate_wer = total_errors / max(1, total_reference_words)
print(f"aggregate WER={aggregate_wer:.1%}")
print(f"aggregate word accuracy={max(0.0, 1 - aggregate_wer):.1%}")
samples = [
Sample(
subject="subject-01",
modality="EEG",
reference="the patient needs a glass of water",
prediction="the patient needs glass water",
),
Sample(
subject="subject-02",
modality="MEG",
reference="please open the window",
prediction="please open the window",
),
]
evaluate(samples)
运行方式:
python evaluate_bci.py
正式评估时,应按受试者和采集会话拆分数据,避免同一人的相邻信号片段同时进入训练集与测试集。否则模型可能记住个体特征,离线指标看起来很高,换一个人或重新佩戴传感器后却迅速下降。
还应同时报告 WER、整句完全匹配率和拒绝率。BCI 系统可以在置信度不足时拒绝输出,而不是强行猜测;在高风险场景中,这通常比单纯追求覆盖率更重要。
从研究结果到真实产品,还有哪些门槛
Brain2Qwerty v2 开源的直接价值,是让研究者能够检查非侵入式信号处理、解码和评估流程,并在统一基线上验证改进。不过,团队在采用前需要处理三类问题。
泛化能力:脑信号具有显著个体差异。同一受试者在不同日期产生的数据也可能漂移,模型可能需要校准或持续适配。
隐私与治理:原始脑信号属于高度敏感的生物数据。采集系统应明确保存期限、访问权限、删除流程和二次用途,不能只保护最终解码出的文本。
交互安全:61% 的词准确率不足以支撑无确认的自由文本控制。更稳妥的产品形态是候选文本、有限命令集和显式确认机制,并为低置信度结果提供拒绝路径。
采用前可以检查以下事项:
- 分别记录 EEG 与 MEG 指标,不混合报告平均值。
- 使用按受试者隔离的测试集,并增加跨会话测试。
- 保存预处理版本、通道配置、采样率和模型版本。
- 同时衡量词错误率、整句准确率、延迟与拒绝率。
- 默认加密原始信号,并限制导出和长期保存。
- 医疗或设备控制场景必须设置人工确认与故障回退。
Brain2Qwerty v2 展示了非侵入式脑信号解码的明显进展,但它更适合作为研究平台和受控交互系统的基础,而不是立即替代键盘。真正决定其可用性的,不只是单次评估中的 61%,还包括跨人群泛化、实时延迟、校准成本和错误发生时的系统行为。