Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AttributeError: Wave_read instance has no attribute '__exit__' #4

Closed
rileycrane opened this issue Jan 25, 2016 · 11 comments
Closed

AttributeError: Wave_read instance has no attribute '__exit__' #4

rileycrane opened this issue Jan 25, 2016 · 11 comments

Comments

@rileycrane
Copy link

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!

@PantherTheCat
Copy link

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"

@tobiasboyd
Copy link

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).

@PantherTheCat
Copy link

@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

@tobiasboyd
Copy link

@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 ?

@PantherTheCat
Copy link

@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.

@PantherTheCat
Copy link

@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

@PantherTheCat
Copy link

Figured it out, the TRRS jack mod was not scored deep enough, so it was not recording. Everything working now.

@al-jimenez
Copy link

@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

@bugduino
Copy link

I'm getting the same error with a bluetooth speaker/microphone, are there any progress?

@zampy24
Copy link

zampy24 commented Nov 30, 2016

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

@renekliment
Copy link
Member

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants