Alexa client in your browser. Django app.
Project description
Alexa client in your browser. Django app. Talk to Alexa from your desktop, phone, or tablet browser.
Dependencies
This project depends on: - django-channels. - Snowboy
Install and configure those first.
Snowboy
Snowboy detects when the wakeword “Alexa” is uttered.
You must compile Snowboy manually. Copy the compiled snowboy folder to the top level of you project. By default, the folder structure should be:
. ├── ... ├── snowboy | ├── snowboy-detect-swig.cc | ├── snowboydetect.py | └── resources | ├── alexa.umdl | └── common.res └── ...
If the default folder structure does not suit your needs you can customize the wakeword detector.
Installation
pip install alexa_browser_client
Add alexa_browser_client to your settings INSTALLED_APPS.
Routing and urls
Add url(r'^', include('alexa_browser_client.config.urls')), to urls.py url_patterns.
Add include('alexa_browser_client.config.routing.channel_routing') to your routing.py channel_routing.
Authentication
This app uses Alexa Voice Service. To use AVS you must first have a developer account. Then register your product here. Choose “Application” under “Is your product an app or a device”?
Ensure you update your settings.py:
Setting |
Notes |
---|---|
ALEXA_BROWSER_CLIENT_AVS_CLIENT_I D |
Retrieve by clicking on the your product listed here |
ALEXA_BROWSER_CLIENT_AVS_CLIENT_S ECRET |
Retrieve by clicking on the your product listed here |
ALEXA_BROWSER_CLIENT_AVS_REFRESH_ TOKEN |
You must generate this. See here |
ALEXA_BROWSER_CLIENT_AVS_DEVICE_T YPE_ID |
Retrieve by reading “Product ID” here |
Refresh token
You will need to login to Amazon via a web browser to get your refresh token.
To enable this first go here and click on your product to set some security settings under Security Profile:
setting |
value |
---|---|
Allowed Origins |
|
Allowed Return URLs |
Then run:
./manage.py create_amazon_refresh_token
Follow the on-screen instructions shown at http://localhost:9000 in your web browser. On completion Amazon will return your refresh_token. Set yourALEXA_BROWSER_CLIENT_AVS_REFRESH_TOKEN setting accordingly.
Usage
Once you have all the settings configured:
Run django: ./manage.py runserver
Go to http://localhost:8000/alexa-browser-client/ and start talking to Alexa.
Customization
Wakeword
The default wakeword is “Alexa”. You can change this by customizing the lifecycle’s audio_detector_class:
# my_project/consumers.py
import alexa_browser_client
import command_lifecycle
class CustomAudioDetector(command_lifecycle.wakeword.SnowboyWakewordDetector):
wakeword_library_import_path = 'dotted.import.path.to.wakeword.Detector'
resource_file = b'path/to/resource_file.res'
decoder_model = b'path/to/model_file.umdl'
class CustomAudioLifecycle(alexa_browser_client.AudioLifecycle):
audio_detector_class = CustomAudioDetector
class CustomAlexaConsumer(alexa_browser_client.AlexaConsumer):
audio_lifecycle_class = CustomAudioLifecycle
Then in your routes.py:
from my_project import consumers channel_routing = [ consumers.CustomAlexaConsumer.as_route(path='/'), ]
Unit test
To run the unit tests, call the following commands:
pip install -r requirements-dev.txt
./scripts/tests.sh
To test a specific file, call the following command:
./scripts/tests.sh /path/to/test-file.py
Other projects
This project uses Voice Command Lifecycle and Alexa Voice Service Client.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for alexa_browser_client-0.8.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a64b08792779be67e9ebe8b95725d5ec9f6a2399efc258d56a8020967c323951 |
|
MD5 | b7472a08f8a069cfe20af2a2a54ca813 |
|
BLAKE2b-256 | a6fb39169b535429d95d007bd701d34acf67ca53863cda11a23f3e15bbf2582a |