### Describe the issue you are experiencing
Speech-to-Phrase is constantly cras…hing with the following output:
Hardware is qemu
```
2026-04-01 18:15:01.255280329 [W:onnxruntime:Default, device_discovery.cc:211 DiscoverDevicesForPlatform] GPU device discovery failed: device_discovery.cc:91 ReadFileContents Failed to open file: "/sys/class/drm/card0/device/vendor"
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'
[18:15:01] INFO: Service exited with code 1 (by signal 0)
```
### What type of installation are you running?
Home Assistant OS
### Which operating system are you running on?
Home Assistant Operating System
### Which app are you reporting an issue with?
Piper
### What is the version of the app?
Speech-to-Phrase 1.4.2
### Steps to reproduce the issue
install Speech-to-Phrase on HA , check protocol of add-on, see repeated looping of error shown above
Installationsmethode Home Assistant OS
Core 2026.4.0
Supervisor 2026.03.2
Operating System 17.1
Frontend 20260325.5
### System Health information
## System Information
version | core-2026.4.0
-- | --
installation_type | Home Assistant OS
dev | false
hassio | true
docker | true
container_arch | amd64
user | root
virtualenv | false
python_version | 3.14.2
os_name | Linux
os_version | 6.12.67-haos
arch | x86_64
timezone | Europe/Berlin
config_dir | /config
<details><summary>Home Assistant Community Store</summary>
GitHub API | ok
-- | --
GitHub Content | ok
GitHub Web | ok
HACS Data | ok
GitHub API Calls Remaining | 5000
Installed Version | 2.0.5
Stage | running
Available Repositories | 2929
Downloaded Repositories | 8
</details>
<details><summary>Home Assistant Cloud</summary>
logged_in | false
-- | --
can_reach_cert_server | ok
can_reach_cloud_auth | ok
can_reach_cloud | ok
</details>
<details><summary>Home Assistant Supervisor</summary>
host_os | Home Assistant OS 17.1
-- | --
update_channel | stable
supervisor_version | supervisor-2026.03.2
agent_version | 1.8.1
docker_version | 29.1.3
disk_total | 97.7 GB
disk_used | 38.2 GB
nameservers | 192.168.200.1, fdd1:c6ca:f375:1::1
healthy | true
supported | true
host_connectivity | true
supervisor_connectivity | true
ntp_synchronized | true
virtualization | kvm
board | ova
supervisor_api | ok
version_api | ok
installed_addons | Matter Server (8.3.0), Terminal & SSH (10.0.2), Mosquitto broker (6.5.2), ESPHome Device Builder (2026.3.1), openWakeWord (2.1.0), Whisper (3.1.0), Piper (2.2.2), SQLite Web (6.0.0), Speech-to-Phrase (1.4.2)
</details>
<details><summary>Dashboards</summary>
dashboards | 17
-- | --
resources | 5
views | 19
mode | storage
</details>
<details><summary>Network Configuration</summary>
adapters | lo (disabled), enp0s6 (enabled, default, auto), hassio (disabled), docker0 (disabled), veth634ab8d (disabled), vethdae238b (disabled), veth4e6f95f (disabled), vetha7ff373 (disabled), vethc29ad45 (disabled), vethf3b904f (disabled), veth0f1fe45 (disabled)
-- | --
ipv4_addresses | lo (127.0.0.1/8), enp0s6 (192.168.200.254/24), hassio (172.30.32.1/23), docker0 (172.30.232.1/23), veth634ab8d (), vethdae238b (), veth4e6f95f (), vetha7ff373 (), vethc29ad45 (), vethf3b904f (), veth0f1fe45 ()
ipv6_addresses | lo (::1/128), enp0s6 (2003:fe:3f05:e001:7b2d:7fc7:952:4b3c/64, fdd1:c6ca:f375:1:4d42:93c5:88bf:d1de/64, fe80::50ad:81c:d5aa:17ac/64), hassio (fd0c:ac1e:2100::1/48, fe80::586d:f8ff:fea2:b230/64), docker0 (fe80::5:6dff:feef:6123/64), veth634ab8d (fe80::b463:c5ff:feb6:c8b/64), vethdae238b (fe80::805a:a1ff:fe78:9c18/64), veth4e6f95f (fe80::a81a:5fff:fef0:b7dd/64), vetha7ff373 (fe80::a05f:4bff:fe55:855/64), vethc29ad45 (fe80::e4ac:33ff:feee:5d9c/64), vethf3b904f (fe80::109c:e6ff:feb1:600a/64), veth0f1fe45 (fe80::28e4:8bff:fed3:21bc/64)
announce_addresses | 192.168.200.254, 2003:fe:3f05:e001:7b2d:7fc7:952:4b3c, fdd1:c6ca:f375:1:4d42:93c5:88bf:d1de, fe80::50ad:81c:d5aa:17ac
</details>
<details><summary>Recorder</summary>
oldest_recorder_run | 21. März 2026 um 18:37
-- | --
current_recorder_run | 1. April 2026 um 17:58
estimated_db_size | 4089.95 MiB
database_engine | sqlite
database_version | 3.49.2
</details>
### Anything in the Supervisor logs that might be useful for us?
```txt
```
### Anything in the app logs that might be useful for us?
```txt
2026-04-01 18:15:01.255280329 [W:onnxruntime:Default, device_discovery.cc:211 DiscoverDevicesForPlatform] GPU device discovery failed: device_discovery.cc:91 ReadFileContents Failed to open file: "/sys/class/drm/card0/device/vendor"
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'
[18:15:01] INFO: Service exited with code 1 (by signal 0)
```
### Additional information
_No response_