ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
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?
Yes, that's the idea! Kind of like DNS also, as far as the Internet's.
I still want to see what people think, but I'm now deciding that for now, it might be too complicated. But if I keep writing code, maybe not forever! It's also true that I have lost a lot of code in the past. Before github or anything like that.
Now, however, I've gottem my language further, which is a step in the right direction. If it's not too complicated, I'd love to do it in the order I specified. Maybe help me determine for sure, if it's not right now.
By the way, I did TRY to write a bit of code for android, but the language I was using, I forget the name, but one of those drag and drop languages, that no longer exist, did not have the ability to do structures like I needed.
As others would say don't reinvent the wheel. There are several speech recognition toolkits and speech to text libraries available as well as text to speech programs.
If you use Amazon Voice Services you might be limited on licensing.
Just a fyi mycroft is/was an open source voice assistant project no longer in development. They had 13 developers.
That's why I was posting here, long before I do it. I wanted to NOT reinvent the wheel, as I went. Since even my planned OS, will be built with the Linux kernel (this is not about that project), I wanted at the very least, to make sure that I wasn't reinventing the voice protocols, for lack of a better word. I don't want to start from parsing raw microphone input, unless I write even a kernel myself, possibly. I forget right now, some of my algorithms I came up with, without deeper thought, but I want to at least use other's code for microphone recognizing, and speech syntehsis output. Can you post a link to a website for the ones who you mentioned? I'll check those out, next, perhaps.
Yes, but that is my weakest computer skill. Finding answers to everyday problems. That link will do. But a lot of the time, I don't even think to search. Sorry. That's what I mean by weakest skill.
I think that's enough to find more answers though, as now I can think, just enough to know where to start. I can't really open a thread to become better at searching, especially the knowing when to, I'll have to keep picking that up along the way. I guess I have to continue making enough mistakes where I could search a "little" more, like this, even though I wouldn't have found that, than other ways to learn. Then eventually I'll get it. I generally do a little research before most threads. Then there are times, like this, where I forget to do most of it. I guess I just was one generation too soon to master this skill better, as though I'm good at things now, I didn't grow up with Internet pretty much at all.
I had no other way of finding most information, as encyclopedias were too hard for me, than ask a bunch of people. I learned to do that great! I'm now learning to find more myself. Even if I have to ask some more strangers.
I think now, that I have a start, getting the idea out there too, research CAN do the rest. FOR now though...
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.