AttributeError: Wave_read instance has no attribute '__exit__'
rileycrane opened this issue · comments
Hi,
I'm trying to get this working. I've done the hardware mod (is there a way to test if it's successful?). Every time I run main.py
I hear "hello" and then when I connect together Pins 14 and 1 on U14 I get the following error:
Traceback (most recent call last):
File "main.py", line 128, in <module>
with wave.open('beep.wav', 'rb') as f:
AttributeError: Wave_read instance has no attribute '__exit__'
Any ideas would be appreciated. Also, I had problems installing alsa based on your instructions. I had to install mpg321 independently.
Thanks!
I am experincing the same issue as @rileycrane @nextthingco commentor advised moving to python 3 instead may help, however when attempting to run main.py with python 3 i get an error that alsaaudio module is not found. I installed pip3 to run the install with pip3 which failed out stating that multiple items were not found.
"chip@chip:~/AlexaCHIP$ sudo pip3 install -r requirements.txt
Downloading/unpacking Wave>=0.0.2 (from -r requirements.txt (line 1))
Downloading Wave-0.0.2.tar.gz
Running setup.py (path:/tmp/pip-build-dol7oi7b/Wave/setup.py) egg_info for package Wave
package init file 'wave/__init__.py' not found (or not a regular file)
warning: no files found matching '*.gif' under directory 'doc'
Downloading/unpacking python-memcached>=1.50 (from -r requirements.txt (line 2))
Downloading python_memcached-1.57-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): requests>=2.4.3 in /usr/lib/python3/dist-packages (from -r requirements.txt (line 3))
Downloading/unpacking wsgiref>=0.1.2 (from -r requirements.txt (line 4))
Downloading wsgiref-0.1.2.zip
Running setup.py (path:/tmp/pip-build-dol7oi7b/wsgiref/setup.py) egg_info for package wsgiref
Traceback (most recent call last):
File "", line 17, in
File "/tmp/pip-build-dol7oi7b/wsgiref/setup.py", line 5, in
import ez_setup
File "/tmp/pip-build-dol7oi7b/wsgiref/ez_setup/init.py", line 170
print "Setuptools version",version,"or greater has been installed."
^
SyntaxError: Missing parentheses in call to 'print'
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "", line 17, in
File "/tmp/pip-build-dol7oi7b/wsgiref/setup.py", line 5, in
import ez_setup
File "/tmp/pip-build-dol7oi7b/wsgiref/ez_setup/init.py", line 170
print "Setuptools version",version,"or greater has been installed."
^
SyntaxError: Missing parentheses in call to 'print'
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build-dol7oi7b/wsgiref
Storing debug log for failure in /root/.pip/pip.log"
I have been working on getting a cheap BT speaker/headset to act as the audio out/in, but if you haven't already, you might try switching from the jack to pins 10 and 12 on U14: http://docs.getchip.com/#pin-headers (to see if it's related to the cutting / soldering).
@tobiasboyd I am using 10 12, I also used the mic in/ hpcom as an attempt.
I have run this on 2 different CHIPS now - one that was using the TRRS mod, which i reversed and then seutp the jack through the header pins.
The second, I never did the mod, and used only the pins. (The second, gave me the same error once I ran the main.py and pressed the button/shorted GND - XPIO1)
I tried again using python 3, reinstalling everything Alsa & memcache specific for python 3 installation, while I no longer get the wave error, I get a new error stating
chip@chip:~/echo$ sudo python3 main.py
Traceback (most recent call last):
File "main.py", line 131, in
audio += data
TypeError: Can't convert 'bytes' object to str implicitly
@PantherTheCat : that error seems less mysterious, audio
is implicitly cast to a str in line 126. Do you get the same error if that's audio = None
?
@tobiasboyd - I will see what happens when I try that modification. I have been working with another user who has made several code modifications that I was also going to attempt.
@tobiasboyd yes same error.
@jitto created a python 3 version that gets further. Although I still end with an error - Although the error is after the button is released, instead of on press - so that is progress 😸
https://github.com/jitto/AlexaCHIP
Traceback (most recent call last):
File "main.py", line 119, in
alexa()
File "main.py", line 99, in alexa
data = r.content.split(boundary.encode('utf-8'))
UnboundLocalError: local variable 'boundary' referenced before assignment
https://bbs.nextthing.co/t/turning-the-chip-into-an-amazon-echo/1630/33?u=panther
Figured it out, the TRRS jack mod was not scored deep enough, so it was not recording. Everything working now.
@PantherTheCat I am getting the same error. I am using a USB microphone numb and the TRRS jack for audio output. I would prefer not to modify and score the CHIP board. Is there a way of not getting this error if you DON'T modify the board? Python3, etc installed...
NOTE: I have audio capture working and audio output working with arecord/aplay, just get the same error when I run python main.py:
Traceback (most recent call last):
File "main.py", line 119, in
alexa()
File "main.py", line 99, in alexa
data = r.content.split(boundary.encode('utf-8'))
UnboundLocalError: local variable 'boundary' referenced before assignment
I don't want to modify the board unless I have to.
Thanks
I'm getting the same error with a bluetooth speaker/microphone, are there any progress?
I was having the same UnboundLocalError, and for me, it didn't seem to be related to the bit rate or other of some of the solutions out there. So, in main.py, I just put it in a Try block to handle the error and prevent it from crashing. Seems to be working so far... (note: having trouble with the indents....try: and except are at the same indent, everything else is the same, but pushed forward one indent)
try:
data = r.content.split(boundary.encode('utf-8'))
for d in data:
if (len(d) >= 1024):
audio = d.split(b'\r\n\r\n')[1]
with open("response.mp3", 'wb') as f:
f.write(audio)
os.system('mpg321 -q 1sec.mp3 response.mp3')
except(UnboundLocalError):
print('had an error')
pass
This project is now deprecated in favor of the new AlexaPi (https://github.com/alexa-pi/AlexaPi) which has all the features of this project and much more, such as:
- support for a wide range of devices and platforms (Raspberry Pi, CHIP, Orange Pi, desktops, Magic Mirror and others)
- voice activation (great PocketSphinx support and snowboy support soon to be released)
- much more robust installation and configuration
- better security
- Arch Linux support
- awesome documentation
- and much, much more! You get it - it's just awesome.
Please switch over to the new project and if your issue persists there, file an issue in the new repo's issue tracker. Thank you.