I signed up to write apps for my Amazon Echo, Amazon sent me an NDA
I signed up for the beta API here:
https://developer.amazon.com/public/solutions/devices/echo
This week I got the below email. It promises access, but only if I agree to an NDA. I was planning to do all of my development on GitHub, permissively licensed (or public domain), and of course I'd want to get feedback and ideas from friends and other developers. It also makes me question how friendly the Echo will be to hackers and open development in the future — do I really want to invest my time in it?
I understand that NDAs have their place, but I don't think this is one. I have experience developing for Apple devices, where any information relating to prerelease OSs is covered by NDA, and it's easy to find questions on Stack Overflow where someone asks an innocent question and is immediately shot down by another developer: "This API is embargoed." I don't want to encourage that spirit in the developer community.
Have any other developers signed up and gotten this email? If you were in this situation, would you fight it?
The email and NDA: https://gist.github.com/Sidnicious/c0483c73653b3c2c619f
51 comments
[ 2.7 ms ] story [ 112 ms ] threadGenerally these are big B2B partnerships.
They might go public eventually with it, but until then most people will probably experience this.
Source: Have run (and do currently help run) a couple of private API programs for large companies.
EDIT: Part of the reason they are doing it is because their API might be crap right now, or rife with potential security/use case holes. They don't want open apps out there either yet. Basically they are trying to control the experience.
There are version guarantee considerations to make.
Also, having told my current company this, people will find the API and expose it anyway.
My guess is that Amazon realizes the capabilities of this device are toeing the line of acceptability to most people, and they are taking whatever steps they can to avoid bad press (such as an app developer revealing how much they can eavesdrop, or what security or lack-thereof exists).
I know that sucks, but if you want something more open, perhaps there is something you can do with a Raspberry Pi w/ some kind of voice module?
They're afraid people will write an app for themselves, and distribute it.
They want to control access/experience.
Then why would they make it public?
Some people start public and go private (Netflix, LinkedIn)
Raspberry Pi isn't all that "open", either, but I suppose at least it doesn't have an NDA. See the Issues section here:
https://wiki.debian.org/RaspberryPi
But 'confidential information' is not defined in the agreement, and without expiration, I'd still be nervous. Perhaps I overworry.
I'd say sign it and start developing.
Either the product will reach critical mass and the NDA will be much more loosely enforced, or it will fail and the NDA won't matter. With big companies you'll always have to sign something like this to get into their walled garden. Try not to let it get in your way.
Many times they (the company running this type of API) just kicks them to the side.
Two wrongs don't make a right.
Almost every programming language has a canonical API that is extremely simple to set up. In .NET and Google Chrome, it's even first-party, and I only mention those because they happen to be the ones I've used.
And text-to-speech is no different. You can get to "good enough" so easily that I'm somewhat perplexed why more people don't do it.
I just think there is a perception that adding a speech recognition feature to your app is "hard". It's difficult to design a good speech-based user experience (I've found longer phrases work better than single-words, and it's good to try to match on homophones as well), but actually integrating the code is not that tough.
So I would encourage you to ignore Amazon. Seriously, you could make this in a weekend in a Google Chrome browser on an Android device that you plug a nice microphone into.
But yes, I believe the System.Speech.Recognition namespace wraps WSR. But given that it's in the System namespace, it should be a part of the ECMA standard for .NET. Aaaaaand, yep, it appears it is available in Mono, so I assume they are managing the cross-platform dependency issues for you.
Change Android settings to always listen when screen is on, then keep screen always on (dims when not active). Voice-controlled App support galore! Google Now! Develop whatever you need/want!
The Echo is a neat idea put into action, but it can be hacked together in a much better way, very easily.
I would, however, be interested in trying to create a room simulator. I did work on living space automation for a while, a few years ago (specifically for hotels, not homes). One of the most difficult parts of designing good user experiences was the lack of ability to rapidly test, due to the need to setup a ton of devices, associate them together, maybe even flash them with new ROMs. You could get in two, maybe three tests as day, if you were really cooking. I wanted to be able to test as fast as I could compile code, you know, like I had gotten used to in every other software project I had ever worked on. But electrical engineers work with primitive tools and seem to like it.
.NET seems to be built on the technology that has shipped with Windows for a while, and yet Cortana etc still reach out to the mothership for their speech recognition, so there are probably significant benefits to doing so, otherwise someone would have made theirs work offline and touted it.
I'm guessing that matching a pre-specified pattern with some amount of error is easier than transcribing arbitrary voice, which you need for search.
But I definitely agree, I regularly wish I could stop google maps' directions with a voice command when I get to a part of a route that I already know well enough to complete myself.
There aren't more popular client-side APIs because there aren't more popular client-only applications, and there aren't more popular client-only applications because developing the user experience is hard. I think, if you used one of these systems to figure out a good UX, then it would give you the impetus to chase down a good client-side solution for speech recognition.
Now, I am sure Dragon V1 would be quite underwhelming to my modern notions of how computers should work. But I would even say my smartphone is better than a middle-of-the-road PC from 2010. It's better than my PS2, and even my PS2 had a few games that had speech interface (some Navy Seals game, it worked pretty well).
What factors are at play? Is it the noise cancellation? Seems like a stationary device in a home has the ideal chance to create a reusable noise cancellation profile.
I don't see any problem here: RIGHT NOW they're not ready to show anything PUBLICLY (and to be bound to an unstable API for example) but when everything will be completly cooked, they'll make it public
The NDA is just a way to ensure that the API wont become a de-facto liability and wont be made public by good souls... ;)
"If you are interested in being part of a limited-participation beta ahead of the SDK's public release"
It says right there that the SDK is going to go public. Can you blame them for wanting to slowly ramp up their API capacity and not have a sea of devs whining every time their early beta API changes? Why must everything be evil?
Then one says "Echo, play 'Start my heating'". The Echo plays what it thinks is a short song named 'Start my heating' by that band "My Hacked Home Controls" which you seem to like so much, which goes "beep beep boop whisle click", and the other machine(s) hears that easy to interpret command and does what you want. If you need information back, have the(a) machine put that information into a "Results" sound file and add/overwrite it to the command/music library which the Echo can see and play from, then tell the Echo to play that file for you to hear. You say, "Echo play 'Backups Status'" and it plays the voice you assigned to your backup monitor telling you whatever.
Basically, the Echo becomes a translation droid between you and the computer(s) that you have deeper/more control of. And as a bonus, depending on how you encode the commands into sounds, you might be able to learn some of the more common whistle sequences from your translation droid, and just do them yourself.