Snips Uses Rust to Build an Embedded Voice Assistant
blog.mozilla.org
blog.mozilla.org
We are using Rust because it is safe and very fast!
We would love to tell more about what we are building if you have questions.
The whole platform runs on-device which makes it ideal for privacy, cost, and to allow it to run when there is no network
We are available in English, French, German, and soon Japanese and Korean and we are working on other European languages!
We would love to see what you build with our platform to feature it on our website
Take a look at what some people have built with it: https://github.com/snipsco/awesome-snips
and a few tutorials to get you started: https://medium.com/snips-ai/building-a-voice-controlled-home...
- Music player with Spotify and Sonos: https://vimeo.com/237742054
- News and weather forecasts: https://www.youtube.com/watch?v=IFQzDSWr2l0
- Controlling blinds: https://www.youtube.com/watch?v=ukkOLqcm2CY&t=9s
- Zork game: https://www.youtube.com/watch?v=5RX4Dm9TmCY
- Prayer assistant: https://www.youtube.com/watch?v=x1AGaYBLzkA&feature=youtu.be
For the Raspberry Pi 2 the model is a bit too large, but we will be able to handle them as hubs: your Raspberry Pi 2 in multiple rooms will detect the wakeword and stream the voice to a "hub" Raspberry Pi 3 which will do the speech recognition
Where, generally, does a company like this get training data? Do you just hire a team to tag TV clips and YouTube videos?
ps. Please add other European languages soon :)
Thanks!
And that's what we call an "non sequitur".
"Instead of having to write and then rewrite for each platform, he used Rust’s cross-compilation capability" also does not make a lot of sense.
The piece seems to have been a bit over-simplified for non-technical readers, though.
The blog article was very lean on the technical details apart from some basics about rust's safety and portability features.
could you elaborate on where the gains from rust come into play ?, is your model built on a DL framework that is written in rust ?.
you can serve the model using tensorflow serving using exported parameters. Its exactly what you want for serving the model.
It does become a bit of a drag when you are building more complex networks (e.g. with multiple RNN layers, batch normalization, etc.). In that case there are two straightforward options for Rust. There is a Tensorflow Rust binding against the tensorflow C API [1] with which you can just load and run a frozen Tensorflow graph. This is the approach that I am currently using, though I am running graphs on workstations/servers.
Another option is compiling the graph with Tensorflow's XLA AOT compilation, which compiles the network to C++ classes (that you could bind from Rust).
they had announced a keyboard app for iOS and Android which did seemingly the same thing as the swipe keyboard.
Their IA assistant seems really interesting, and I would really love to give it a try, but I don't want to invest energy if there is a high risk that the service shuts down soon.
I remember the Tranquilien app [0], which was also developed by Snips. There was a lot of media talking about it, but it has been quickly stopped :(.
[0] https://www.digital.sncf.com/store/applications/tranquilien-...
On Techcrunch [0] > The team didn’t have a product or business model in mind. It experimented for a while, launching projects around smart cities, such as Tranquilien, a service that predicts how busy your train is going to be, or a smart empty parking spot prediction service.``
[0] https://techcrunch.com/2015/06/26/snips-grabs-6-3-million-to...
Since the libraries are all mirrored on crates.io and, by design, cannot be removed once they are published, you should be good, at least until the day the owners of crates.io stop being able to pay the server costs.
I believe that you can also host local mirrors, but I haven't checked that.
I'm all for using rust for the speed and safety it allows, and then FFI-ing to CMUSphinx (this is exactly what I want to do, given more free time in the future), could you explain why the available open source libraries (CMUsphinx is just one, there's also Julius) couldn't be used?
Sphinx is like that.
Are you saying that the sphinx progress is at that same level currently as the state of the art in the 90s? Surely that's hyperbole.
Also, using AI to generate even better models doesn't seem like a bad idea, if you're looking to improve it -- the fundamentals of speech recognition haven't changed, why build a completely separate open source product instead of contributing to something already well understood and accessible?
Kaldi does support neural network models in addition to good old HMMs, but it is very "researchy": everything is set up so that you can replace any step in the pipeline by your components (and then publish a paper about your results). But that also means that you pretty much have to be an expert to correctly assemble a working product from the available components, and it's pretty much assumed that you will be training your own models, which can be difficult when you don't have access to lots of data.
So yes, the existing landscape for open-source speech recognition leaves something to be desired, and the focus of existing projects doesn't necessarily lend itself to turning them into what you want.
neural network models have their own downsides, the biggest one of which being training -- why throw the baby out with the bathwater instead of taking the approach kaldi has taken, possibly building a neural network model alternative inside sphinx?
Let CMU plug away at making HMMs better, while you plug away at making neural networks better, but interoperate so everyone gets both benefits? You can even maybe make some headway with the neural network bootstrapping problem with some help from the progress CMU has already made.
How does any other project benefit from the models you build? Or is that the business model -- produce open source software that no one else can really extend or use with anything else, but hopefully people will then buy into your modelling strategy + tooling?
I do realize that you have absolutely no obligation to any other voice recognition effort, but I wonder how easy it is for anyone else to use the model you're building.
We will be open-sourcing more of the platform over time and give back to the community, this will start with the NLU in the coming weeks
Again, I want to express that you don't owe me anything (and it was entitled of me to imply that you did) -- but I wanted to know. Maybe in the future writing that thing that can enrich other models is possible.
What kind of models do you use ?
Well done.