Describe the issue you are experiencing
Yesterday I updated Piper from 2.1.1 to 2.2.1 and it stopped working. Did a restart and tried two TTS commands, here's the logs:
[06:11:23] INFO: Successfully send discovery information to Home Assistant.
s6-rc: info: service discovery successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='wyoming event handler' coro=<AsyncEventHandler.run() done, defined at /usr/local/lib/python3.11/dist-packages/wyoming/server.py:31> exception=Error('# channels not specified')>
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 234, in _handle_synthesize
_VOICE.synthesize_wav(text, wav_writer, syn_config)
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 401, in synthesize_wav
for audio_chunk in self.synthesize(
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 285, in synthesize
sentence_phonemes = self.phonemize(text)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 233, in phonemize
_ESPEAK_PHONEMIZER = EspeakPhonemizer(self.espeak_data_dir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/piper/phonemize_espeak.py", line 17, in __init__
from . import espeakbridge # avoid circular import
^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: cannot import name 'espeakbridge' from 'piper' (/usr/local/lib/python3.11/dist-packages/piper/__init__.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/wyoming/server.py", line 41, in run
if not (await self.handle_event(event)):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 137, in handle_event
raise err
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 111, in handle_event
await self._handle_synthesize(self._synthesize)
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 233, in _handle_synthesize
with wav_writer:
File "/usr/lib/python3.11/wave.py", line 453, in __exit__
self.close()
File "/usr/lib/python3.11/wave.py", line 565, in close
self._ensure_header_written(0)
File "/usr/lib/python3.11/wave.py", line 583, in _ensure_header_written
raise Error('# channels not specified')
wave.Error: # channels not specified
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='wyoming event handler' coro=<AsyncEventHandler.run() done, defined at /usr/local/lib/python3.11/dist-packages/wyoming/server.py:31> exception=Error('# channels not specified')>
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 234, in _handle_synthesize
_VOICE.synthesize_wav(text, wav_writer, syn_config)
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 401, in synthesize_wav
for audio_chunk in self.synthesize(
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 285, in synthesize
sentence_phonemes = self.phonemize(text)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 233, in phonemize
_ESPEAK_PHONEMIZER = EspeakPhonemizer(self.espeak_data_dir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/piper/phonemize_espeak.py", line 17, in __init__
from . import espeakbridge # avoid circular import
^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: cannot import name 'espeakbridge' from 'piper' (/usr/local/lib/python3.11/dist-packages/piper/__init__.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/wyoming/server.py", line 41, in run
if not (await self.handle_event(event)):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 137, in handle_event
raise err
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 120, in handle_event
await self._handle_synthesize(self._synthesize)
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 233, in _handle_synthesize
with wav_writer:
File "/usr/lib/python3.11/wave.py", line 453, in __exit__
self.close()
File "/usr/lib/python3.11/wave.py", line 565, in close
self._ensure_header_written(0)
File "/usr/lib/python3.11/wave.py", line 583, in _ensure_header_written
raise Error('# channels not specified')
wave.Error: # channels not specified
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?
2.2.1
Steps to reproduce the issue
- Update Piper to 2.2.1
- Run tts.speak action, e.g.
- action: tts.speak
metadata: {}
target:
entity_id: tts.piper
data:
cache: false
media_player_entity_id: media_player.my_player
message: Test
System Health information
System Information
| version |
core-2026.1.3 |
| installation_type |
Home Assistant OS |
| dev |
false |
| hassio |
true |
| docker |
true |
| container_arch |
aarch64 |
| user |
root |
| virtualenv |
false |
| python_version |
3.13.11 |
| os_name |
Linux |
| os_version |
6.12.47-haos-raspi |
| arch |
aarch64 |
| timezone |
Europe/Dublin |
| config_dir |
/config |
Home Assistant Community Store
| 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 |
2687 |
| Downloaded Repositories |
14 |
Home Assistant Cloud
| logged_in |
false |
| can_reach_cert_server |
ok |
| can_reach_cloud_auth |
ok |
| can_reach_cloud |
ok |
Home Assistant Supervisor
| host_os |
Home Assistant OS 17.0 |
| update_channel |
stable |
| supervisor_version |
supervisor-2026.01.1 |
| agent_version |
1.8.1 |
| docker_version |
29.1.3 |
| disk_total |
110.0 GB |
| disk_used |
17.1 GB |
| nameservers |
192.168.88.45 |
| healthy |
true |
| supported |
true |
| host_connectivity |
true |
| supervisor_connectivity |
true |
| ntp_synchronized |
true |
| virtualization |
|
| board |
rpi4-64 |
| supervisor_api |
ok |
| version_api |
ok |
| installed_addons |
Mosquitto broker (6.5.2), Terminal & SSH (9.22.0), File editor (5.8.0), go2rtc (1.9.14), SQLite Web (5.0.0), InfluxDB (5.0.2), Samba share (12.5.4), Matter Server (8.2.2), Piper (2.2.1), Music Assistant (2.7.6), ESPHome Device Builder (2026.1.3), Everything Presence Zone Configurator (2.0.12) |
Dashboards
| dashboards |
8 |
| resources |
8 |
| views |
18 |
| mode |
storage |
Network Configuration
| adapters |
lo (disabled), end0 (enabled, default, auto), docker0 (disabled), hassio (disabled), veth24f21ef (disabled), vethc2a2fdd (disabled), vethc038645 (disabled), veth05a0e46 (disabled), veth572b34e (disabled), veth6d0a689 (disabled), veth18ffbd3 (disabled), veth0c5900d (disabled), veth84482c5 (disabled), veth6476e26 (disabled), vethfcc0654 (disabled), veth03a8b4a (disabled) |
| ipv4_addresses |
lo (127.0.0.1/8), end0 (192.168.x.y/zz), docker0 (172.30.232.1/23), hassio (172.30.32.1/23), veth24f21ef (), vethc2a2fdd (), vethc038645 (), veth05a0e46 (), veth572b34e (), veth6d0a689 (), veth18ffbd3 (), veth0c5900d (), veth84482c5 (), veth6476e26 (), vethfcc0654 (), veth03a8b4a () |
| ipv6_addresses |
lo (::1/128), end0 (fe80::fff8:10fb:37c6:xxxx/64), docker0 (fe80::4cd2:84ff:fef4:xxxx/64), hassio (fe80::c06a:fbff:feb6:xxxx64), veth24f21ef (fe80::9cb9:b5ff:fe61:xxxx/64), vethc2a2fdd (fe80::4456:8dff:feb6:xxxx/64), vethc038645 (fe80::446d:fbff:fefc:xxxx/64), veth05a0e46 (fe80::544d:b1ff:fe3c:xxxx/64), veth572b34e (fe80::e885:1dff:feeb:xxxx/64), veth6d0a689 (fe80::24b3:f7ff:xxxx:8f/64), veth18ffbd3 (fe80::23:d0ff:xxxx:550/64), veth0c5900d (fe80::302f:c2ff:fee0:xxxx/64), veth84482c5 (fe80::70be:71ff:fe0d:xxxx/64), veth6476e26 (fe80::7cb9:4dff:fe39:xxxx/64), vethfcc0654 (fe80::642c:17ff:fe6c:xxxx/64), veth03a8b4a (fe80::e803:31ff:feb0:xxxx/64) |
| announce_addresses |
192.168.x.y, fe80::fff8:10fb:37c6:xxxx |
Recorder
| oldest_recorder_run |
24 January 2026 at 19:57 |
| current_recorder_run |
1 February 2026 at 19:35 |
| estimated_db_size |
1368.70 MiB |
| database_engine |
sqlite |
| database_version |
3.49.2 |
Anything in the Supervisor logs that might be useful for us?
Anything in the app logs that might be useful for us?
[06:11:23] INFO: Successfully send discovery information to Home Assistant.
s6-rc: info: service discovery successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='wyoming event handler' coro=<AsyncEventHandler.run() done, defined at /usr/local/lib/python3.11/dist-packages/wyoming/server.py:31> exception=Error('# channels not specified')>
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 234, in _handle_synthesize
_VOICE.synthesize_wav(text, wav_writer, syn_config)
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 401, in synthesize_wav
for audio_chunk in self.synthesize(
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 285, in synthesize
sentence_phonemes = self.phonemize(text)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 233, in phonemize
_ESPEAK_PHONEMIZER = EspeakPhonemizer(self.espeak_data_dir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/piper/phonemize_espeak.py", line 17, in __init__
from . import espeakbridge # avoid circular import
^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: cannot import name 'espeakbridge' from 'piper' (/usr/local/lib/python3.11/dist-packages/piper/__init__.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/wyoming/server.py", line 41, in run
if not (await self.handle_event(event)):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 137, in handle_event
raise err
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 111, in handle_event
await self._handle_synthesize(self._synthesize)
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 233, in _handle_synthesize
with wav_writer:
File "/usr/lib/python3.11/wave.py", line 453, in __exit__
self.close()
File "/usr/lib/python3.11/wave.py", line 565, in close
self._ensure_header_written(0)
File "/usr/lib/python3.11/wave.py", line 583, in _ensure_header_written
raise Error('# channels not specified')
wave.Error: # channels not specified
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='wyoming event handler' coro=<AsyncEventHandler.run() done, defined at /usr/local/lib/python3.11/dist-packages/wyoming/server.py:31> exception=Error('# channels not specified')>
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 234, in _handle_synthesize
_VOICE.synthesize_wav(text, wav_writer, syn_config)
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 401, in synthesize_wav
for audio_chunk in self.synthesize(
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 285, in synthesize
sentence_phonemes = self.phonemize(text)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 233, in phonemize
_ESPEAK_PHONEMIZER = EspeakPhonemizer(self.espeak_data_dir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/piper/phonemize_espeak.py", line 17, in __init__
from . import espeakbridge # avoid circular import
^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: cannot import name 'espeakbridge' from 'piper' (/usr/local/lib/python3.11/dist-packages/piper/__init__.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/wyoming/server.py", line 41, in run
if not (await self.handle_event(event)):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 137, in handle_event
raise err
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 120, in handle_event
await self._handle_synthesize(self._synthesize)
File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 233, in _handle_synthesize
with wav_writer:
File "/usr/lib/python3.11/wave.py", line 453, in __exit__
self.close()
File "/usr/lib/python3.11/wave.py", line 565, in close
self._ensure_header_written(0)
File "/usr/lib/python3.11/wave.py", line 583, in _ensure_header_written
raise Error('# channels not specified')
wave.Error: # channels not specified
Additional information
No response
Describe the issue you are experiencing
Yesterday I updated Piper from 2.1.1 to 2.2.1 and it stopped working. Did a restart and tried two TTS commands, here's the logs:
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?
2.2.1
Steps to reproduce the issue
System Health information
System Information
Home Assistant Community Store
Home Assistant Cloud
Home Assistant Supervisor
Dashboards
Network Configuration
Recorder
Anything in the Supervisor logs that might be useful for us?
Anything in the app logs that might be useful for us?
[06:11:23] INFO: Successfully send discovery information to Home Assistant. s6-rc: info: service discovery successfully started s6-rc: info: service legacy-services: starting s6-rc: info: service legacy-services successfully started ERROR:asyncio:Task exception was never retrieved future: <Task finished name='wyoming event handler' coro=<AsyncEventHandler.run() done, defined at /usr/local/lib/python3.11/dist-packages/wyoming/server.py:31> exception=Error('# channels not specified')> Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 234, in _handle_synthesize _VOICE.synthesize_wav(text, wav_writer, syn_config) File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 401, in synthesize_wav for audio_chunk in self.synthesize( File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 285, in synthesize sentence_phonemes = self.phonemize(text) ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 233, in phonemize _ESPEAK_PHONEMIZER = EspeakPhonemizer(self.espeak_data_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/piper/phonemize_espeak.py", line 17, in __init__ from . import espeakbridge # avoid circular import ^^^^^^^^^^^^^^^^^^^^^^^^^^ ImportError: cannot import name 'espeakbridge' from 'piper' (/usr/local/lib/python3.11/dist-packages/piper/__init__.py) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/wyoming/server.py", line 41, in run if not (await self.handle_event(event)): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 137, in handle_event raise err File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 111, in handle_event await self._handle_synthesize(self._synthesize) File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 233, in _handle_synthesize with wav_writer: File "/usr/lib/python3.11/wave.py", line 453, in __exit__ self.close() File "/usr/lib/python3.11/wave.py", line 565, in close self._ensure_header_written(0) File "/usr/lib/python3.11/wave.py", line 583, in _ensure_header_written raise Error('# channels not specified') wave.Error: # channels not specified ERROR:asyncio:Task exception was never retrieved future: <Task finished name='wyoming event handler' coro=<AsyncEventHandler.run() done, defined at /usr/local/lib/python3.11/dist-packages/wyoming/server.py:31> exception=Error('# channels not specified')> Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 234, in _handle_synthesize _VOICE.synthesize_wav(text, wav_writer, syn_config) File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 401, in synthesize_wav for audio_chunk in self.synthesize( File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 285, in synthesize sentence_phonemes = self.phonemize(text) ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/piper/voice.py", line 233, in phonemize _ESPEAK_PHONEMIZER = EspeakPhonemizer(self.espeak_data_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/piper/phonemize_espeak.py", line 17, in __init__ from . import espeakbridge # avoid circular import ^^^^^^^^^^^^^^^^^^^^^^^^^^ ImportError: cannot import name 'espeakbridge' from 'piper' (/usr/local/lib/python3.11/dist-packages/piper/__init__.py) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/wyoming/server.py", line 41, in run if not (await self.handle_event(event)): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 137, in handle_event raise err File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 120, in handle_event await self._handle_synthesize(self._synthesize) File "/usr/local/lib/python3.11/dist-packages/wyoming_piper/handler.py", line 233, in _handle_synthesize with wav_writer: File "/usr/lib/python3.11/wave.py", line 453, in __exit__ self.close() File "/usr/lib/python3.11/wave.py", line 565, in close self._ensure_header_written(0) File "/usr/lib/python3.11/wave.py", line 583, in _ensure_header_written raise Error('# channels not specified') wave.Error: # channels not specifiedAdditional information
No response