All Projects → richtier → Alexa Browser Client

richtier / Alexa Browser Client

Licence: mit
Alexa client in your browser. Django app.

Programming Languages

python
115233 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to Alexa Browser Client

Django Alexa
Amazon Alexa Skills Kit integration for Django -- PENDING ADOPTION
Stars: ✭ 68 (+466.67%)
Mutual labels:  alexa, django
Texcavator
Text mining on the Royal Library newspaper corpus
Stars: ✭ 9 (-25%)
Mutual labels:  django
Django Rest Booking Api
A Restful api which allows you to book sports events or update existing odds.
Stars: ✭ 24 (+100%)
Mutual labels:  django
Project Dashboard With Django
Agile Project Management dashboard with Django REST and Vue.js
Stars: ✭ 25 (+108.33%)
Mutual labels:  django
Ituscheduler
Create your ITU course schedules in fashion with up-to-date & detailed information.
Stars: ✭ 24 (+100%)
Mutual labels:  django
Hawkpost
Generate links that users can use to submit messages encrypted with your public key.
Stars: ✭ 843 (+6925%)
Mutual labels:  django
Django Bookworm
A fun project to store my learning from each book that I read.
Stars: ✭ 23 (+91.67%)
Mutual labels:  django
Django Blogging System
This is blog system created using Django 1.11.4 and Python3
Stars: ✭ 11 (-8.33%)
Mutual labels:  django
Thecsebot
Bot user for the slack team of IIT Roorkee, CSE students batch of 2016-20
Stars: ✭ 9 (-25%)
Mutual labels:  django
Stcokvisualization
基于Django框架的Tushare股票数据可视化平台
Stars: ✭ 26 (+116.67%)
Mutual labels:  django
Django Jenkins
Plug and play continuous integration with django and jenkins
Stars: ✭ 933 (+7675%)
Mutual labels:  django
Django Hijack
With Django Hijack, admins can log in and work on behalf of other users without having to know their credentials.
Stars: ✭ 924 (+7600%)
Mutual labels:  django
Homeassistant
Example Home Assistant Configs
Stars: ✭ 846 (+6950%)
Mutual labels:  alexa
Zhihu
django + vue 仿知乎
Stars: ✭ 24 (+100%)
Mutual labels:  django
Adfs managers
This is site (web-app) to manage teams and statistic for ADFS
Stars: ✭ 10 (-16.67%)
Mutual labels:  django
Django Email Confirm La
Django email confirmation for any model and any field
Stars: ✭ 23 (+91.67%)
Mutual labels:  django
React Webpack Django
De-coupled ReactJS client for greater flexibility and less black-box Django magic
Stars: ✭ 24 (+100%)
Mutual labels:  django
Django Rest Framework Social Oauth2
python-social-auth and oauth2 support for django-rest-framework
Stars: ✭ 941 (+7741.67%)
Mutual labels:  django
Django Controlcenter
Set of widgets to build dashboards for Django projects
Stars: ✭ 866 (+7116.67%)
Mutual labels:  django
Django Ecommerce
An e-commerce website built with Django
Stars: ✭ 861 (+7075%)
Mutual labels:  django

Alexa Browser Client

code-climate-image circle-ci-image codecov-image pypi-image django-version-image

Alexa client in your browser. Django app. Talk to Alexa from your desktop, phone, or tablet browser.


Demo

The demo should really be heard, so click the gif below to view it in youtube.

Demo

Run the demo

First follow these steps:

  1. Configure your Amazon oauth configuration
  2. Set your environment variables
  3. Install:
$ git clone [email protected]:richtier/alexa-browser-client.git
$ cd alexa-browser-client
$ virtualenv .venv -p python3.6 && source .venv/bin/activate && make test_requirements
  1. Compile snowboy
  2. $ make demo
  3. Go to http://localhost:8000 for basic demo, or http://localhost:8000/mixer/ to play with the response audio

Installation

pip install alexa_browser_client

Make sure your settings INSTALLED_APPS contains at least these entries:

INSTALLED_APPS = [
    'django.contrib.staticfiles',
    'channels',
    'alexa_browser_client',
]

Dependencies

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.

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_ID Retrieve by clicking on the your product listed here
ALEXA_BROWSER_CLIENT_AVS_CLIENT_SECRET Retrieve by clicking on the your product listed here
ALEXA_BROWSER_CLIENT_AVS_DEVICE_TYPE_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 and, assuming you're running on localhost:8000, set the following:

setting value
Allowed Origins https://localhost:8000/refreshtoken/
Allowed Return URLs https://localhost:8000/refreshtoken/callback/

Usage

Once you have all the settings configured:

  • Run django: ./manage.py runserver
  • Go to http://localhost:8000 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 routing.py:

import alexa_browser_client.consumers
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.sessions import SessionMiddlewareStack

from django.conf.urls import url


application = ProtocolTypeRouter({
    'websocket': SessionMiddlewareStack(
        URLRouter([
            url(r"^ws/$", alexa_browser_client.consumers.AlexaConsumer),
        ])
    ),
})

Versioning

We use SemVer for versioning. For the versions available, see the PyPI.

Other projects

This project uses Voice Command Lifecycle and Alexa Voice Service Client.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected]