Skip to main content

The Mycroft Personal Server – Starting the Conversation

By October 1, 2018 No Comments
The Mycroft Personal Server will allow users with privacy concerns, or unreliable internet the ability to run Mycroft entirely on their on network.

In my July post where I introduced the Mycroft Roadmaps, I laid out plans for a Mycroft Personal Server. I’ve had conversations with many about the concept, but exact goals and designs haven’t been established yet. I see this as a highly Community-centric project, so I’d like to start a conversation so we can all get on the same page.

What is it?

Mycroft is inherently modular, allowing pieces of the system to be moved around as appropriate for the specific implementation. Up to this point, the typical implementation runs the majority of Mycroft on a device such as a Mark 1, Raspberry Pi, or laptop. This includes Wake Word processing, intent parsing, and text to speech(TTS) (more on Mimic2 TTS below).

For normal operation, there is one critical piece isn’t included in that list — Speech to Text (STT). The typical Mycroft device today uses Mycroft’s Home to perform the STT operation. This is automatic and invisible to most users.

The server also offers several other services that are important:

In my view, the Personal Server would provide some version of all of these services. It should allow a household to run all of their Mycroft equipment without any network necessary until a Skill needs to access the internet to retrieve information.

This means the personal server would at minimum need to run Speech to Text (DeepSpeech), Text to Speech (Mimic), and provide a configuration web interface.

Why would anyone need this?

There are several very good reasons for implementing this capability.

  • Slow, unreliable internet – I’m personally spoiled by Google Fiber here in Kansas City and forget that not everyone in the world has gigabit connection speeds.
  • Limited or expensive internet – Similar to the above, but slightly different motivation
  • No internet – Yes, this exists. Imagine locations in the mountains, on boats, or the far side of the moon.
  • Privacy concerns – Every time data leaves your control, there is a possibility of others misusing it, not safeguarding it adequately, or it being intercepted.

For those willing to accept the responsibility, keeping all operations within a home provides the ultimate in reliability and security.

What a Personal Server Isn’t

The Personal Server is intended to be Personal — not Enterprise Grade. The main reason for this is simplicity. For example, if you don’t have to perform Speech to Text requests for thousands of users, the odds of collision are very low. That means STT requests can be run sequentially instead of requiring a bank of STT servers that can handle a high load.

A Personal Server also isn’t for everyone. You don’t have to be a High Geek but it will require some significant computational resources, like an always-on PC with a high-quality GPU.

Does this mean Home is no longer needed?

No, for several reasons.

Firstly, many people will still want the convenience of just plugging in their device and running it. No worries about setting up a server, no challenges accessing the web UI from their phone without firewall magic, etc. It just works.

Second, there is still value in having a central collaboration hub. Mycroft has always been about communal efforts, and Community requires gathering places. Home provides a place to:

  • Share and assist in tagging data to advance the technology
  • Discover new information
  • Download voices, and skills from others
  • Provide a gateway to access other Mycroft devices and Mycroft-hosted services

Your Thoughts?

All of the above are my thoughts. But as I said at the beginning, I want this to be a conversation. What do you want and see for the Mycroft Personal Server? Are there concerns I’m overlooking? Would you like to be involved in the building of this, taking control of your own fate?

Please join us on our Community Forum to participate in the conversation!