This repository was archived by the owner on Oct 19, 2023. It is now read-only.
This repository was archived by the owner on Oct 19, 2023. It is now read-only.
sounddevice.PortAudioError: Error opening RawStream: Device unavailable [PaErrorCode -9985] in the grpc sample #219
Closed
Description
Hi,
This issue is related to the stream fix work that was done by @proppy in #188.
Testing on the raspberry pi 3 (running under python3)
If I use the master branch (includes the fix) I get the following error:
(env3dev) ➜ ~ googlesamples-assistant-pushtotalk
INFO:root:Connecting to embeddedassistant.googleapis.com
Traceback (most recent call last):
File "/home/pi/env3dev/bin/googlesamples-assistant-pushtotalk", line 11, in <module>
sys.exit(main())
File "/home/pi/env3dev/lib/python3.5/site-packages/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/home/pi/env3dev/lib/python3.5/site-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/home/pi/env3dev/lib/python3.5/site-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/pi/env3dev/lib/python3.5/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/home/pi/env3dev/lib/python3.5/site-packages/googlesamples/assistant/grpc/pushtotalk.py", line 347, in main
flush_size=audio_flush_size
File "/home/pi/env3dev/lib/python3.5/site-packages/googlesamples/assistant/grpc/audio_helpers.py", line 190, in __init__
blocksize=int(block_size/2), # blocksize is in number of frames.
File "/home/pi/env3dev/lib/python3.5/site-packages/sounddevice.py", line 1256, in __init__
**_remove_self(locals()))
File "/home/pi/env3dev/lib/python3.5/site-packages/sounddevice.py", line 772, in __init__
'Error opening {0}'.format(self.__class__.__name__))
File "/home/pi/env3dev/lib/python3.5/site-packages/sounddevice.py", line 2563, in _check
raise PortAudioError(errormsg, err)
sounddevice.PortAudioError: Error opening RawStream: Device unavailable [PaErrorCode -9985]
While if I don't use these fixes (using the 0.4.4 sable release ) I can run the sample with no errors and i can interact with the assistant but sometimes I get the usual audio errors:
(env) ➜ ~ googlesamples-assistant-pushtotalk
INFO:root:Connecting to embeddedassistant.googleapis.com
Press Enter to send a new request...
INFO:root:Recording audio request.
WARNING:root:SoundDeviceStream read overflow (3200, 6400)
INFO:root:Transcript of user request: "tell".
INFO:root:Playing assistant response.
INFO:root:Transcript of user request: "tell me".
INFO:root:Playing assistant response.
INFO:root:Transcript of user request: "tell me a".
INFO:root:Playing assistant response.
INFO:root:Transcript of user request: "tell me a joke".
INFO:root:Playing assistant response.
INFO:root:Transcript of user request: "tell me a joke".
INFO:root:Playing assistant response.
INFO:root:Transcript of user request: "tell me a joke".
INFO:root:Playing assistant response.
INFO:root:Transcript of user request: "tell me a joke".
INFO:root:Playing assistant response.
INFO:root:Transcript of user request: "tell me a joke".
INFO:root:Playing assistant response.
INFO:root:End of audio request detected
INFO:root:Transcript of user request: "tell me a joke".
INFO:root:Playing assistant response.
WARNING:root:SoundDeviceStream write underflow (size: 1600)
WARNING:root:SoundDeviceStream write underflow (size: 1600)
WARNING:root:SoundDeviceStream write underflow (size: 1600)
WARNING:root:SoundDeviceStream write underflow (size: 1600)
WARNING:root:SoundDeviceStream write underflow (size: 1600)
WARNING:root:SoundDeviceStream write underflow (size: 1600)
WARNING:root:SoundDeviceStream write underflow (size: 1600)
WARNING:root:SoundDeviceStream write underflow (size: 1600)
WARNING:root:SoundDeviceStream write underflow (size: 1600)
INFO:root:Finished playing assistant response.
Press Enter to send a new request...
INFO:root:Recording audio request.
INFO:root:End of audio request detected
INFO:root:Finished playing assistant response.
Press Enter to send a new request...
INFO:root:Recording audio request.
INFO:root:End of audio request detected
INFO:root:Finished playing assistant response.
Press Enter to send a new request...
INFO:root:Recording audio request.
INFO:root:End of audio request detected
INFO:root:Finished playing assistant response.
Traceback (most recent call last):
File "/home/pi/env/bin/googlesamples-assistant-pushtotalk", line 11, in <module>
sys.exit(main())
File "/home/pi/env/lib/python3.5/site-packages/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/home/pi/env/lib/python3.5/site-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/home/pi/env/lib/python3.5/site-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/pi/env/lib/python3.5/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/grpc/pushtotalk.py", line 424, in main
continue_conversation = assistant.assist()
File "/home/pi/env/lib/python3.5/site-packages/tenacity/__init__.py", line 214, in wrapped_f
return self.call(f, *args, **kw)
File "/home/pi/env/lib/python3.5/site-packages/tenacity/__init__.py", line 295, in call
start_time=start_time)
File "/home/pi/env/lib/python3.5/site-packages/tenacity/__init__.py", line 252, in iter
return fut.result()
File "/usr/lib/python3.5/concurrent/futures/_base.py", line 398, in result
return self.__get_result()
File "/usr/lib/python3.5/concurrent/futures/_base.py", line 357, in __get_result
raise self._exception
File "/home/pi/env/lib/python3.5/site-packages/tenacity/__init__.py", line 298, in call
result = fn(*args, **kwargs)
File "/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/grpc/pushtotalk.py", line 169, in assist
self.conversation_stream.stop_playback()
File "/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/grpc/audio_helpers.py", line 288, in stop_playback
self._source.stop()
File "/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/grpc/audio_helpers.py", line 221, in stop
self.flush()
File "/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/grpc/audio_helpers.py", line 211, in flush
self._audio_stream.write(b'\x00' * self._flush_size)
File "/home/pi/env/lib/python3.5/site-packages/sounddevice.py", line 1202, in write
_check(err)
File "/home/pi/env/lib/python3.5/site-packages/sounddevice.py", line 2563, in _check
raise PortAudioError(errormsg, err)
sounddevice.PortAudioError: Can't write to an input only stream [PaErrorCode -9974]
This error I get only on the raspberry pi, if I run the sample on my laptop I have no problem using the master branch
Thanks.