Voice Assistant Idea
by des_a from LinuxQuestions.org on (#6HBPP)
This is just an idea, mind you. I would like to begin to start it in the future. But I haven't yet written a line of code to do it. Here is my idea:
I want to create a voice assistant, and obviously this task would be complex. I would like it's voice to be pretty normal for voice assistants. What stands out of my voice assistant? Well, first of all, I want most/all of it to be totally GPL3. So here's how the theory works.
There is a server, kind of like amazon alexa and google home. This server, is needed for the core of the system. The first time, the client wakes up, it connects to the Internet (let's say always Internet to simplify the context), and it goes to the server, and downloads the whole server code, onto the client, and runs it sort of like VNC, where you have a server and a client, as part of the client. The first time the device is awakened, you MUST connect to that server, for you to be able to function. It is an error if you cannot. After that, there are certain times, when updates are "pushed" to the clients, but most of the time, you need to run a command on the client, to tell it to update specifically. Otherwise, it works off of the local copy all the time. The local copy may or may not be able to connect to the Internet to work for what you're doing. Thus, a hybrid approach to home assistant and Alexa. That's a basic requirement.
There would be a "master" server, I would have to run, which would probably have to be closed source, by it's nature, which would contain the main server code. However, the other servers, which I talked about, would be open source. A server, which is a local copy of the master, can be created anywhere. I would have to run a cloud copy of the master server server, to make it work for anybody. Perhaps I would need a small subscription to keep it running?
However, since the server that's not master is open source, plus allowed to be downloaded, anybody could download the main server software, and make their own local instance of the master server. It is your choice, when to update to the master server. The local servers, are where all the downloading for the client takes place.
There are certain updates that are manditory, and the rest, are up to the user. As few as possible are NOT up to the user. However, some may HAVE to be updated forcibly. Like HUGE security holes or something.
I would want to start the client, as either an extension, or some other form of program, designed to run on the Linux Mint cinnamon desktop. I would later want an android client too, and then maybe IOS client, if apple will let me. I don't want any Windows clients to be supported. Also, I'd like it to be able to run atop home assistant.
Now that you know the basics of how it works, let me tell you the story of what features would be manditory:
1. A basic system
2. A connection to the Alexa services, allowing you to run ANY alexa command, if possible
3. A connection to the Google Home services, allowing you to run ANY Google Home command
4. A connection to Home Assistant available, hopefully it would become Home Assistant's standard Voice Assistant
I would want it to be able to "down the road", have it's own hardware, which would be a mini PC, with built in Microphone and speaker. It's OS, is my own, down the road, which I would provide a client for, but Linux Mint for now, and thus runs the cinnamon software.
Any ideas how I would begin to write it? Would I have to start with microphone primitives, or is there some prewrtten code for voice input and output on cinnamon?
I want to create a voice assistant, and obviously this task would be complex. I would like it's voice to be pretty normal for voice assistants. What stands out of my voice assistant? Well, first of all, I want most/all of it to be totally GPL3. So here's how the theory works.
There is a server, kind of like amazon alexa and google home. This server, is needed for the core of the system. The first time, the client wakes up, it connects to the Internet (let's say always Internet to simplify the context), and it goes to the server, and downloads the whole server code, onto the client, and runs it sort of like VNC, where you have a server and a client, as part of the client. The first time the device is awakened, you MUST connect to that server, for you to be able to function. It is an error if you cannot. After that, there are certain times, when updates are "pushed" to the clients, but most of the time, you need to run a command on the client, to tell it to update specifically. Otherwise, it works off of the local copy all the time. The local copy may or may not be able to connect to the Internet to work for what you're doing. Thus, a hybrid approach to home assistant and Alexa. That's a basic requirement.
There would be a "master" server, I would have to run, which would probably have to be closed source, by it's nature, which would contain the main server code. However, the other servers, which I talked about, would be open source. A server, which is a local copy of the master, can be created anywhere. I would have to run a cloud copy of the master server server, to make it work for anybody. Perhaps I would need a small subscription to keep it running?
However, since the server that's not master is open source, plus allowed to be downloaded, anybody could download the main server software, and make their own local instance of the master server. It is your choice, when to update to the master server. The local servers, are where all the downloading for the client takes place.
There are certain updates that are manditory, and the rest, are up to the user. As few as possible are NOT up to the user. However, some may HAVE to be updated forcibly. Like HUGE security holes or something.
I would want to start the client, as either an extension, or some other form of program, designed to run on the Linux Mint cinnamon desktop. I would later want an android client too, and then maybe IOS client, if apple will let me. I don't want any Windows clients to be supported. Also, I'd like it to be able to run atop home assistant.
Now that you know the basics of how it works, let me tell you the story of what features would be manditory:
1. A basic system
2. A connection to the Alexa services, allowing you to run ANY alexa command, if possible
3. A connection to the Google Home services, allowing you to run ANY Google Home command
4. A connection to Home Assistant available, hopefully it would become Home Assistant's standard Voice Assistant
I would want it to be able to "down the road", have it's own hardware, which would be a mini PC, with built in Microphone and speaker. It's OS, is my own, down the road, which I would provide a client for, but Linux Mint for now, and thus runs the cinnamon software.
Any ideas how I would begin to write it? Would I have to start with microphone primitives, or is there some prewrtten code for voice input and output on cinnamon?