I’m not sure – I ended up adding
if (string.IsNullOrEmpty(line)) { continue; }
to the foreach (Choice choice in choices) loop in Narrate().
foreach (Choice choice in choices)
And since that fixed it, I haven’t looked into it more since.
Very well done. I won't add this in the tool itself because I don't want to break potential situations in which the blank line was the expected behaviour for some kind of artistic effect, but it looks like the bold thing to do.
It’s definitely not something for every project haha – but it suited the needs of what I was working on :)