How can I make a speller with BCI? I am trying to make a speller with BCI using EEG (SSVEP or P300, whichever is easier). I would be really grateful if someone could give me a plan of action so as to where do I get started and what skills or tools I might require. As for now, I have access to a cognitive neuroscience lab and EEG.
Thanks.
Yeah this is a very common and effective approach. Try doing a google search for: P300 speller github for some implementations. One issue that you should pay attention to is the limited refresh rate of computer monitors. You are going to want very accurate synchronization between what is shown on a monitor and the EEG being recorded. You'll want to use some type of framework that allows for this synchronization such as PsychoPy (for Python) or Psychtoolbox (for Matlab). 

Here is a great writeup of how to implement a P300 speller in Python. Looks like they use Pyff.

First step, in my opinion, is to look at some examples that have already been implemented:

Here is a Matlab framework for BCI with an example P300 speller that uses PsychToolbox for good event timing. Looks like the repository is actively maintained.

Also, look at OpenVibe. Another framework for BCI. There are a lot of examples available there.

Try one or a few of these out and see if you can get something that has already been made working. Then you'll be in a much better position to implement your own speller.