Skip to content

Piper exceptions after upgrade to 2.2.1 #4384

Description

@Bikonja

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

  1. Update Piper to 2.2.1
  2. 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?

Nothing useful

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions