Sharing an issue I found and was able to fix with voice PE, hopefully saves someone else a bit of time. The voice assistant PE, after initial configuration would hear the wake-up word, seemingly listen to my question then almost immediately two of the leds on it would start flashing until either reusing the wakeup word or pressing the button.
After determining the issue seemed to be coming from parsing the speech, I found logs at this endpoint: /config/app/core_speech-to-phrase/logs and stack traces indicating a words.txt file was improperly formatted:
ERROR: SymbolTable::ReadText: Bad number of columns (1), file = /share/speech-to-phrase/train/en_US-rhasspy/data/lang/words.txt, line = 194: econet
ERROR: FstHeader::Read: Bad FST header: standard input. Magic number not matched. Got: 0
Opening that file on HA under /share/speech-to-phrase/train/en_US-rhasspy/data/lang/words.txt reveals a map table of sorts that include a phrase and what looks like an index. Going to the line number that the stack trace complains about revealed a phrase that looked similar to this: econet^@^@^@^@^@^@^@^@^@ 193
Those ^@ characters apparently indicating null bytes. After reading a bit about what the file is, you can’t simply delete the offending line as the file is frequently regenerated. So, I traced this back to a sentences.yaml file under /share/speech-to-phrase/train/en_US-rhasspy/sentences.yaml and found that this value came from an area (like livingroom) defined in HA.
I went into the UI and updated the name of the area, making sure to highlight the entire value so that it removed any null characters. I saved the changes, and restarted the speech-to-phrase service. This regenerated the words.txt file leading to a bit more subtle version of the same problem. Stack traces indicating a different line number popped up, so I followed all the steps from above, except this time there were two identical values, which is not allowed:
valve 318
valve 319
In this case, the null characters never made it to the words.txt but were in the sentences.yaml. But also, since I had an area named econet and an econet valve, I put the pieces together and updated the valve name the same way I updated the area name. Restart speech-to-phrase service, and this thing finally works.
Sorry for the wall of text
