Speech to text engine - Speech-to-phrase not working

Dear all,
yesterday I followed the instructions at Getting started - Local - Home Assistant for local based voice control and HA Voice Preview Edition. But I seem not to be able to get the Speech-to-Phrase close-ended speech model running correctly. (Whisper and Piper worked flawlessly and I run the Voice PE currently with those, but would like Speech-to-Phrase since according to description performing better on lower end hardware.) So already at step 1 of the above description something seems not to be alright.

The problem description or noteworthy artefacts:

  • Speech-to-Phrase is running in the Apps categorie (started)
  • It is however not shown in Devices and Services, where the autodetect or add to Wyoming Protocol could be done (as was done for both Piper and Whisper and OpenWakeword).
  • Noteworthy is that when clicking “Start” in the Apps at the Speech-to-Phrase App it takes minutes until it is reported running. Compared to all other apps a very long time. (I just am stopping the time and its above 8 minutes already, see too P.S. section for the protocoll which seems something is off)

(I already tested, starting/stopping multiple times, and reinstalled Speech-to-Phrase once but behaviour is identical)

Would anyone have a idea what I could test to resolve the issue?

HW configuration:

  • Home Assistant Yellow with latest HA-OS (2026.4.0, Supervisor 2026.03, OS 17.1, …) with LAN and WLAN access; RasPi Compute Module 4, 8GB RAM,
  • HA Voice PE connected via WLAN
  • Smartphone (Samsung) with HA

Best regards,
Thomas

P.S. I just saw the protocoll reporting this continously:

[15:43:55] INFO: Service exited with code 1 (by signal 0)
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/src/.venv/lib/python3.11/site-packages/speech_to_phrase/__main__.py", line 191, in <module>
    asyncio.run(main())
  File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/usr/src/.venv/lib/python3.11/site-packages/speech_to_phrase/__main__.py", line 96, in main
    await _retrain_once(state, force_retrain=True)
  File "/usr/src/.venv/lib/python3.11/site-packages/speech_to_phrase/__main__.py", line 131, in _retrain_once
    hass_info = await get_hass_info(
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/.venv/lib/python3.11/site-packages/speech_to_phrase/hass_api.py", line 413, in get_hass_info
    names=[name.strip() for name in names],
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/.venv/lib/python3.11/site-packages/speech_to_phrase/hass_api.py", line 413, in <listcomp>
    names=[name.strip() for name in names],
           ^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'strip'
1 Like

There was a bug in Speech-To-Phrase that caused it to enter an infinite crash loop under certain conditions. With the bug fix (version 1.4.3), Speech-To-Phrase is now working again (at least for me).

1 Like

Thank you both. Reinstalled the app again and with 1.4.3 it installed now quickly and did integrate in wyoming properly.