User Tools

Site Tools


Keep Talking Assist

I saw a video of Devan Hurst's KTANE AI partner, then saw his was written in Ruby, so I set out to make my own in C#. Borrowed some of his input grammar and maze variables.

Soon later found out how hard it was to make the voice input work so I left it out, and how tricky some modules are such as Who's On First and Morse Code. Not being able to solve Knob while doing Wire Sequences can be a killer.

Text input only.

Code available at:

Limitation Factors

  • System.Speech.Synthesis - Sounds very robotic, blocks input (I'm not using async yet) but the program reading out the solutions is a must for solving the game within the time limit.
  • System.Speech.Recognition - I found this to be complete trash, with the grammar options [Blue, Red, Yellow, White] it could never tell what colour I was saying - is it an Australian thing? I left this out to finish all the modules.


KeepTalkingAssist supports all standard modules and the needy Knob. Following is notes on my current progress to optimize the input flow.

  • Button - Color and Text entry are separate stages, and it reads out all the options for “Releasing A Held Button”. It's slow but it works. Ideally the first inputs should be done in one stage for speed.
  • Keypad - The program has been given a couple of different ways of describing each of the symbols (most from Devan), such as [Octopus, Squid, Spider, Spaceship] all map to the same symbol. Each symbol is a separate input stage. Unlike Button, this actually flows really well this slow (and accurate).
  • Knob - In one input stage it must be told all the columns where both lights are lit. This works well but it really needs to be possible to interrupt another module solver to use.
  • Maze - Both co-ordinates of each shape are given in one stage each, then it reads out the solution maybe a little too quickly. First time writing an A* algorithm by the way!
  • Memory - The display and the buttons left to right are given in one stage then it reads what label to press. Flow is perfect.
  • Morse Code - I didn't spend much time on this one, describing morse code is a pain, and missing a letter or a letter ending can lead to getting the wrong solution. Works well when you get the first 2 letters correct.
  • Password - The column is given in a stage each, it tries to find the solution as it goes. If there's 3 possible solutions it'll read them all out to try. Usually solved after 2-3 columns.
  • Simon - First things first, the flow on this one is terrible. If you make a mistake a few sequences in, it's a disaster. It's fine with strikes it's just my memory. What the program really needs, is to just describe how the colours rotate/swap and let the bomb diffuser do all the work (cause it would be faster and could be done during another module).
  • Who's On First - Text input wise, the flow is fine, however the TTS reading out all the options can be a disaster - should consider swapping over to Devan's grammar. Some of the solutions are poorly optimized, the program should just read the read few and prompt to continue.
  • Wires Simple - The first module I wrote the solver for, each wire colour is a separate input stage. This one has one of the worst flows given how simple it should be. Waiting on accurate speech recognition before improving.
  • Wires Complicated - Currently this one has all the wire colours in a separate stage, then all the lights and symbols together. I believe I have a bug in my lookup table somewhere but I can't find it, think it has something to do with white wires. The flow is okay, but it might be better to give the LED/colours/symbol together per wire.
  • Wires Sequence - Each wire colour to letter is given in one input stage, the flow is fine. I see no reason to further optimize.
keeptalkingassist.txt · Last modified: 2017/04/06 17:36 by jas2o