rgrokett / RaspiAsteriskAlexa

Integrating Asterisk with Amazon Alexa Voice Service on a Raspberry Pi Zero using AGI
GNU General Public License v3.0
64 stars 22 forks source link

Any idea what terms this (currently) falls foul of with AVS? #12

Closed ghost closed 7 years ago

ghost commented 7 years ago

What a great project! But in your README, you say (added 4th August 2016):

Important Note: This can only be used as a proof-of-concept. It currently does not meet the Amazon Voice Service Agreement for Public or Commercial application. See https://developer.amazon.com/edw/avs_agreement.html for more details. It does meet requirements for home or experimental (private) use.

Before I go too far down the road of a project, do you know WHY this would not meet the agreement?

From digging through the terms (which have now moved to https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/support/terms-and-agreements), I found the following, which is where I guess the issue lies:

(b) Your Product will transmit responses delivered by the Alexa Service directly to the end user immediately upon receipt of the response;

(c) you will not collect or store copies of any audio, transcripts, voice or other interactions either intended for or delivered by the Alexa Service;

The problem here is that, necessarily, there will be a path that involves a trans-code of the 8 bit ulaw/alaw.

Also

Alexa Voice Service Program Requirements

Section 2 (q) you will not allow an end user of Your Product to access the Alexa Service through Your Product during a voice communication occurring on or through Your Product (such as a phone call) without Amazon’s prior written approval, and any such implementation may be subject to additional terms and conditions;

However, there is also this, written AFTER your README - do the following make any material difference?

Changes to Alexa Agreement

Changes posted August 23, 2016.

We’ve updated the Alexa Agreement to remove the requirement that you obtain Amazon’s written approval prior to implementing far-field voice recognition or use of a spoken word to trigger the activation of the Alexa Service in Your Products, and to make other updates. Please review the full text of the updated Alexa Agreement carefully.

Changes posted January 30, 2017.

We’ve updated the Alexa Agreement to add Amazon Media EU S.à r.l. as an Amazon Party and to reflect the launch of the Alexa Voice Service Program in the United Kingdom and Germany. Please review the full text of the updated Alexa Agreement carefully.

I tried asking another Alexa dev, and he said that as far as he is aware, Alexa requires a "one to one" relationship with the end user, but he thinks AVS could be used to interpret intent.

That said, I wonder if LEX is the safe way to go? This StackOverflow answer seems to suggest so, https://stackoverflow.com/questions/43696952/difference-between-amazon-lex-polly-vs-alexa-voice-services-alexa-skill-k

Also, it seems like Lex has a similar use of Lambda and slots and intents. so perhaps Lex and Polly is the answer? http://docs.aws.amazon.com/lex/latest/dg/lambda-input-response-format.html

Have you looked into this? What do you think? If you think this might work and haven't already done it, I'd be happy to help!

rgrokett commented 7 years ago

Originally, Amazon required the use of either the Alexa keyword or a physical button to trigger speech recognition. This project uses neither, just uses Asterisk to record and send the speech file. I don't know if they still require this or not.

I have used LEX/Polly, which does not use Asterisk, but have not found it reliable enough for production use yet. I am sure this will change rapidly, though.

If you are looking for building a commercial product then I strongly suggest getting in contact with AWS marketing & tech folks, as they could answer their licensing and suggest which technology would be best to use.