All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
1.5 - 2017-03-10
Please run the installation script again to install / upgrade all the dependencies.
There are no config changes this time.
Run the auth_web.py
again after the install (when keeping a config) for your device to appear separately in the Alexa app.
- On Debian-based systems, the
python-pip
package gets uninstalled andpip
is installed viaeasy_install
instead to get the latest version. - Recorded audio is now streamed to AVS instead of recording the whole thing and then sending it at once.
- Brings huge speed improvement (response latency).
- This means that when your recording LED (or whatever your device equivalent) is on, data gets sent to Amazon already.
- Used code from @respeaker (thank you!).
- Changed the device ID in auth_web to use a unique ID for the HW from UUID.getnode() to allow multiple devices on one account, this ID is a hashed version of one of the devices MAC addresses.
- Changed hello.mp3 to 24Khz Mono to match the other files
- Updated old versions of requirements in
requirements.txt
. Also fixesImportError: No module named cheroot.server
.
1.4 - 2017-03-01
Please update your config according to the Configuration changes section on the wiki or better, do a new clean installation with a fresh config.
- Startup, pre-interaction, post-interaction and shutdown commands. Can be used to adjust shairport-sync volume for example (see
config.template.yaml
) - dependency on the coloredlogs Python library
- Now configurable (in the configuration file):
- logging level
- pocketsphinx's threshold
- Newly supported platforms:
- hyperion - Allows status visualization with Hyperion.
- serial - This can be used for a device that uses Arduino for example - like the Teddy Ruxpin project Tedlexa for which there is the default setting in the config template.
- SoX playback handler in addition to the existing VLC handler
- This should fix/improve issues with audio on Orange Pi and CHIP (see also the
playback_padding
config option) - TuneIn support is experimental and will be improved in the future
- This should fix/improve issues with audio on Orange Pi and CHIP (see also the
- Validation of the
input_device
configuration option. If the device is considered invalid, AlexaPi exists with a list of valid options for you to choose. Can be overriden by a new optionallow_unlisted_input_device
.
- Refactored triggering:
- Split into modules. Standalone user triggers are now possible.
- Each trigger can be enabled / disabled. Voice triggering is therefore now optional (although enabled by default).
- Use Python logging instead of prints to stdout
- Changed default pocketsphinx's threshold in the config template from 1e-5 to 1e-10, which should bring better trigger word recognition with hopefully no (or very few) false triggers
- The setup doesn't ask about enabling automatic restart of AlexaPi anymore. It can be enabled manually as described in the Restart on crashes section in the Documentation.
- unused dependencies; if you haven't used it for anything else, you can safely disable it and uninstall:
- memcached (as of this version)
sudo systemctl stop memcached
sudo pip uninstall python-memcached
- (Debian)
sudo apt-get remove memcached
- (Arch Linux)
sudo pacman -R memcached
- Wave:
sudo pip uninstall Wave
- wsgiref:
sudo pip uninstall wsgiref
- py-getch:
sudo pip uninstall py-getch
- memcached (as of this version)
1.3.1 - 2017-01-01
This is mainly a test of doing bugfix releases.
- Error message in setup when the device other is selected.
1.3 - 2016-12-21
- IMPORTANT: This is a major rewrite that requires you to delete the whole old version and set up the new one from scratch. See the Migration quick-guide for help.
- A lot of refactoring and changes for better future development.
- Documentation for users and developers. Also, there are guidelines / tips for contributors.
- Native systemd support (added a service unit file). This brings better security and is easier and convenient.
- Can run under an unprivileged user for better security.
- Newly supported platforms (apart from Raspberry Pi):
- Orange Pi and other A20 / H3 based boards
- C.H.I.P.
- desktop platform, which is an interactive platform. Alexa can be triggered here with keyboard input.
- dummy platform that doesn't do anything (like touching GPIO hardware) and is daemon-friendly.
- Magic Mirror
- See the Devices section in the Documentation for further details.
- Now configurable (in the configuration file):
- Custom command and duration for the long_press feature (e.g. shutting down the Pi after 10s button press)
- Platform trigger voice confirmation (you can set whether you want to hear Alexa's yes after you press a button)
- Audio output device
- Default volume
- Different audio output devices for speech and media can be specified.
- Support for Arch Linux.
- Improved directory structure.
- Paths improvements for better platform-independency and UX.
- Use system temporary directory for recordings/answers, which is usually in RAM to avoid using system storage.
- Default install path is now /opt/AlexaPi.
- Uses pocketsphinx only from PyPI (not the extra
git pull
anymore), which saves about 200 MB on bandwidth and 250 MB in storage space. - More detailed documentation regarding Amazon device registration.
- All configuration in a single YAML file, which among other things enables users to update the python files without worrying.
- Better UX when running setup with existing config.
- Runs via systemd by default. Other options can be selected in setup.
- Runs under an unprivileged user alexapi by default. Can be changed in init scripts / unit files.
- There is no default command for the long_press feature.
- Abstracted device platform code into device_platforms which means we can now support other devices within the same codebase and users can now write their own independent device platform files.
- Abstracted playback library into playback_handlers which means we can now support multiple libraries within the same codebase and users can now write their own independent handlers and can route their sound through whatever they want to.
- Temporarily disabled voice confirmation of the long_press feature.
- Fixed not playing files with colons in their name. This resulted in not playing certain Alexa responses like when requesting Flash Briefing.
- Fixed overlapping audio playbacks / not playing some files. Partially caused by previous fix.
- Fixed incorrect handling of AVS responses that contained a further-input-request. This fixes skills like Jeopardy for example.
1.2 - 2016-08-30
@maso27 made significant changes that lead to this version.
- Voice Recognition via CMU Sphinx. When the word "alexa" is detected, Alexa responds with "Yes" and the subsequent audio to be processed.
- Option for the user to install shairport-sync for airplay support.
- A ten-second button press will trigger a system halt.
- Option to monitor Alexa continuously and re-start if it has died.
- Command line arguments:
(-s / --silent)
= start without saying "Hello"(-d / --debug)
= enable display of debug messages at command prompt - Volume control via "set volume xx" where xx is between 1 and 10
- Tunein support is improved.
@sammachin created the project in January 2016 and made significant changes that lead to this version.