Closed basnijholt closed 4 years ago
Actually, rebooting the host made the Input and Output devices show up again.
However now, no devices are recognized inside the add-on:
export DOCKER=`sudo docker container ls | grep rhasspy | awk '{print $1}'`
sudo docker exec $DOCKER arecord -l
gives
arecord: device_list:270: no soundcards found...
Before this list also used to display my PS EYE 3 device:
Did Hass.io change some setting for how they expose audio devices?
Yes they did. According to my research they seperated the audio device exposure to a seperate docker container to allow multiple addons to access audio at same time. Seems there need to be some changes inside the addon to access audio again.
Just for notice: I have the exact same problem. Even after clean reinstall.
I have the similar problem. When I start the Rhasspy, i get the following error, hence not being able to speak anything to Rhasspy. I have tried both eSpeak and PyAudio and have the same problem since they both depend upon the alsa-utils
ALSA lib dlmisc.c:254:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib/arm-linux-gnueabihf/alsa-lib/libasound_module_pcm_pulse.so
aplay: main:788: audio open error: No such device or address
Also I saw that the audio container in hassio is blocking the alsa. For example, if I stop the container and quickly run the aplay command in the SSH, it does run. I said "quickly" because I could run this only for a short duration as the watchdog in the hassio quick resets the audio container and the error reappears
20-03-30 03:12:00 WARNING (MainThread) [supervisor.tasks] Watchdog found a problem with PulseAudio plugin!
20-03-30 03:12:00 INFO (MainThread) [supervisor.audio] Start Audio plugin
20-03-30 03:12:00 INFO (SyncWorker_15) [supervisor.docker.interface] Clean hassio_audio application
20-03-30 03:12:02 INFO (SyncWorker_15) [supervisor.docker.audio] Start Audio homeassistant/armv7-hassio-audio with version 9 -
Just for notice: a) I use the official RaspberryPi Image including the docker container. No manual containers at all. b) I reinstalled HassIO competly from scratch to sort out any update related error. c) I can choose the correct input and output Devices in Supervisor Tab But in WebUI for Rhasspy there are no input Devices detected:
d) Perhaps this commit gives some useful hints as it migrates the Google Assistant Integration to tge new audio. Migrate google assistant to new audio (#1160) · home-assistant/hassio-addons@9000291 https://github.com/home-assistant/hassio-addons/commit/900029152383968239327ee4dbd0325673a7f7f3
And last but not least: Huge thanks for your tremendous work that enables me to have my own little voice recognition at Home!
Here are the details on the logs when I click 'Wake" in the Rhasspy console
DEBUG:WebrtcvadCommandListener:Will timeout in 30 second(s)
DEBUG:PocketsphinxWakeListener:listening -> loaded
DEBUG:WebrtcvadCommandListener:loaded -> listening
DEBUG:APlayAudioPlayer:['aplay', '-q', '/usr/share/rhasspy/etc/wav/beep_hi.wav']
DEBUG:PyAudioRecorder:started -> recording
[2020-03-30 09:55:11,577] xxx.xxx.xxx.xxx:xxxx GET /api/events/log 1.1 101 - 23232323
INFO:quart.serving:xxx.xxx.xxx.xxx:xxxx GET /api/events/log 1.1 101 - 23232323
ERROR:APlayAudioPlayer:on_receive
Traceback (most recent call last):
File "/usr/share/rhasspy/rhasspy/actor.py", line 175, in on_receive
self._state_method(message, sender)
File "/usr/share/rhasspy/rhasspy/audio_player.py", line 67, in in_started
self.play_file(message.wav_path)
File "/usr/share/rhasspy/rhasspy/audio_player.py", line 90, in play_file
subprocess.run(aplay_cmd, check=True)
File "/usr/lib/python3.6/subprocess.py", line 423, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1295, in _execute_child
restore_signals, start_new_session, preexec_fn)
OSError: [Errno 12] Cannot allocate memory
ERROR:PyAudioRecorder:to_recording
Traceback (most recent call last):
File "/usr/share/rhasspy/rhasspy/audio_recorder.py", line 170, in to_recording
frames_per_buffer=self.frames_per_buffer,
File "/usr/local/lib/python3.6/dist-packages/pyaudio.py", line 750, in open
stream = Stream(self, *args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/pyaudio.py", line 441, in __init__
self._stream = pa.open(**arguments)
OSError: [Errno -9996] Invalid input device (no default output device)
DEBUG:PyAudioRecorder:recording -> started
ERROR:quart.serving:Error in ASGI Framework
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/hypercorn/asgi/wsproto.py", line 91, in handle_asgi_app
[2020-03-30 09:55:11,592] Error in ASGI Framework
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/hypercorn/asgi/wsproto.py", line 91, in handle_asgi_app
await asgi_instance(self.asgi_receive, self.asgi_send)
File "/usr/local/lib/python3.6/dist-packages/quart/asgi.py", line 106, in __call__
await _cancel_tasks(pending)
File "/usr/local/lib/python3.6/dist-packages/quart/asgi.py", line 189, in _cancel_tasks
raise task.exception()
File "/usr/local/lib/python3.6/dist-packages/quart/asgi.py", line 157, in handle_websocket
'code': 1000,
File "/usr/local/lib/python3.6/dist-packages/hypercorn/asgi/wsproto.py", line 149, in asgi_send
await self.asend(CloseConnection(code=int(message["code"])))
File "/usr/local/lib/python3.6/dist-packages/hypercorn/asyncio/wsproto.py", line 93, in asend
self.write(self.connection.send(event))
File "/usr/local/lib/python3.6/dist-packages/wsproto/__init__.py", line 64, in send
data += self.connection.send(event)
File "/usr/local/lib/python3.6/dist-packages/wsproto/connection.py", line 101, in send
await asgi_instance(self.asgi_receive, self.asgi_send)
File "/usr/local/lib/python3.6/dist-packages/quart/asgi.py", line 106, in __call__
await _cancel_tasks(pending)
File "/usr/local/lib/python3.6/dist-packages/quart/asgi.py", line 189, in _cancel_tasks
raise task.exception()
File "/usr/local/lib/python3.6/dist-packages/quart/asgi.py", line 157, in handle_websocket
'code': 1000,
File "/usr/local/lib/python3.6/dist-packages/hypercorn/asgi/wsproto.py", line 149, in asgi_send
await self.asend(CloseConnection(code=int(message["code"])))
File "/usr/local/lib/python3.6/dist-packages/hypercorn/asyncio/wsproto.py", line 93, in asend
self.write(self.connection.send(event))
File "/usr/local/lib/python3.6/dist-packages/wsproto/__init__.py", line 64, in send
data += self.connection.send(event)
File "/usr/local/lib/python3.6/dist-packages/wsproto/connection.py", line 101, in send
"Connection cannot be closed in state %s" % self.state
wsproto.utilities.LocalProtocolError: Connection cannot be closed in state ConnectionState.CLOSED
"Connection cannot be closed in state %s" % self.state
wsproto.utilities.LocalProtocolError: Connection cannot be closed in state ConnectionState.CLOSED```
[Resolved - Temporary] okay this is resolved temporarily by installing libasound2-plugins in the Rhasspy container. The solution was provided in the below community thread. However, requesting @synesthesiam to include it in the add-ons. Otherwise, each time this needs to be done when the add-ons is started
Unfortunately this does not work for me as i use the HassIO Addon and thus i cannot login to the rhasspy Container.
libasound2-plugins will be included in the 2.4.20 Docker image.
I've just updated to 2.4.19 (because I needed the fix for https://github.com/synesthesiam/rhasspy/issues/178#event-3108321525), however, now I cannot select any input device in the Rhasspy add-on:
In the Hassio hardware tab I do see the microphone:
Any idea what happened?