Can I use Mycroft offline?


#1

Hey,
my question is: Can I use Mycroft offline? That means Mycroft isn’t connected to the Mycroft Website.

Best regards
Norman


#2

Short answer is no. Long answer is search and read the forum, as there is a lot going on for making a private hosted alternative to home.mycroft.ai.


#3

This topic is interesting regarding running own server.
https://community.mycroft.ai/t/the-mycroft-personal-server-starting-the-conversation


#4

What @andlo said. At the moment, Mycroft is dependent on some cloud services.

Our existing home.mycroft.ai platform is scaled to support tens of thousands of users, and runs across several virtual hosts - probably not all that usable as a local / personal backend. So we need to work on scaling that down - the link that @andlo posted goes more into that.

The other layers to this problem are;

  • Speech to text - really this is the biggest blocker at the moment. Until we can get DeepSpeech to a point where it can run (or at least a vocabulary subset can run) on an embedded device, then we’re going to be stuck with cloud-based STT, irrespective of which cloud that runs on. There have been some substantive efforts by the DeepSpeech community toward this objective.
  • Skill support - most Skills need some form of internet connectivity as they’re connecting to third party APIs.
  • Configuration settings - at the moment, configuration of Devices is done via Skill Settings at home.mycroft.ai so we would need to find a way to do configuration locally.

#5

Thanks for the fast replies. I mean that I can cancel the connection to the mycroft website. I would use then the api keys for example at the weather page.


#6

@JarbasAl has done some work on that. I dont know how far he got. It ads up in this steps:

  • remove all metrics
  • disable pairing
  • disable remote config
  • find an offline STT (pocketsphinx is not good…)

#7

here you go, but please do not ask for support https://github.com/jarbasal/jarbas-core/tree/private

its old, unmaintained, and way behind current release

if you arent afraid of source code you can compare my changes

I have a half written blog post for this, but no time to finish it :stuck_out_tongue:


#8

if you want to mock the home backend https://github.com/JarbasAl/personal-mycroft-backend

also unfinished, but it will perform pairing and give you google stt, so you can trick your device

you can edit the config file to add api keys for skills https://github.com/MycroftAI/mycroft-core/blob/dev/mycroft/configuration/mycroft.conf#L279

this should allow you to make more or less any device functional without mycroft home

please do not ask for support since its not finished… feel free to throw issues and PRs at it however

edit: this is more or less meant to run on the device not on production, everyone asks how to run mycroft offline, it would be lovely if someone from the community took over this one to make it available for every user instead of being a reference for developers :wink:


#9

Hi There,
I’m new at this form and I own a self-made smart-home (based upon KNX with gira homeserver and lots of esp8266 bugs and respberrys I programmed to communicate with all things wich dont have a network interface).
I’m really looking forward to use mycroft complete offline with a local STT server.
I’m also a software developer and linux expert and maybe I can help?
Is there any wiki, forum, git, … where I can get the current status of the project?
What are the biggest problems, right now?


#10

@hack1009 if you mean the personal server, what i need help with is frontend

the backend itself needs updates, the api has evolved and introduced some new routes etc. i do not mind handling all of that and getting it up to date, but i have no time/desire/patience/skills for designing the frontend itself. give me the webpages and i will hook them up together

using a self hosted STT is possible, either deepspeech server or kaldi would work. that could (and is supported by default) be integrated straight in the device without needing the personal server


#11

Hey there @hack1009, welcome, it’s great to have you around.

This blog post by our CTO, Steve Penrod, is a great starting point. @JarbasAl also has done some great work with decoupling mycroft-core from home.mycroft.ai.

The key aspects that need to be worked through include;

Offline STT

We’re finding that Kaldi is OK, but not great, and that DeepSpeech’s accuracy is pretty poor. DeepSpeech at the moment is still a cloud service, but there has been some work done by the great team at Mozilla to try and bring DeepSpeech to single board computers. Offline STT remains a stumbling block.

Authentication to services

home.mycroft.ai provides authentication to several services, like Wolfram Alpha for fallback Skills. It also houses the stored credentials required for individual Skills. In order to decouple home.mycroft.ai from a Device, you would need a “run your own home.mycroft.ai” with similar functionality - that is, the ability to store credentials for Skills, save the location of Devices, pair and remove Devices etc.

This is a fairly big piece of the puzzle, and @JarbasAI is right to call out the amount of work involved in the redesign of the frontend of the site. We’re just starting to re-design home.mycroft.ai and it’s a lot of work

A suggested way forward

I wonder if the next step here is to collaborative work on some sort of API specification for the Offline Mycroft? That way we can reach consensus at least on the API spec. This makes it easier to implement in code, and then it’s also a lot easier to mock out / design a front end.


#12

i took a very simple approach for mapping the backend routes, i swapped the url in the config and monitored all incoming requests, then i added the endpoints one by one and cross checked with the API class what they were supposed to return

if we had an official specification of the routes it would make it much easier to move forward in the backend side. still i can do without that, the frontend design is the big piece i need help with

never got to implementing the metrics/skill settings because that needs a frontend to be testd properly, o thats where i stopped.

at its current state it does what i need it to do, pair devices and provide STT, i also got it geolocating from ip address since i also don’t have the frontend for changing config

the sql bits also need improvements (but are functional), which i think i have done in a local branch not yet in github, this project was my first interaction with sql alchemy :slight_smile:

i would love this to become a community project, consider this a call to arms!