My First AI Plugin Review

So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin.
And it's a fairly recent plugin on the repository. It's called speechable. You will see there is tenacious profile. And if you go and check him out, you'll see it says he's a student from India. So I think it's cool that students are building plugins for WordPress. He's got a pretty cool site. I will say that as well. He's bought a couple of products. I'm going to assume that he's using possibly some AI assisted coding, which I think is great.
I don't have a problem with that at all. But he's built a notes app Chrome extension. He's built a video bot thingy, a notes extension, a screenshot editor. This looks like a Shopify extension. And then this WordPress link. So I'm guessing part of what he's doing is reaching out to people and asking if they'll review his work, so he can get his work out there. So I'm going to make sure my WordPress site is open up here in PHP Store.
Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code.
I will say this, the code is nice and clean and easy to read. Looks like it passes PHPCS. Okay, where's Paul's? In the plugin page, it does talk about that it uses Piper TTS, which is a neural text-to-speech engine that runs in your browser. So I'm curious to know if he is loading that with...
So voice model files are downloaded from Hagingface when first using a voice. WSPA models downloaded for Word Timestamp. The content is locally. So my guess is it's going to download it and install it somewhere in the plugin or the uploads folder or something like that. So these are all the WSPA models.
Yeah, here we go. WinniPlex.lbs, yeah that's the one. WinniPlex.lbs, yeah. So that's a web API for using Piper TTSPers models in the browser. Okay so it's pretty straightforward. Offloads TTSPersons from main thread. While I was scanning through the code I thought it'd be cool
to be able to plug the repo into DeepWiki. It looks like he has put it here so I'm going to do that. I hope you don't mind, Tanish. That'll give me some DeepWiki integration. I can ask questions about the code. That's the best fun. So let's do that. I want to put this on a site somewhere that I know has some content. So what I can do is I can pull all my posts down from my personal site. Okay, so I'm already seeing some things at the plug-ins. Let's go to the Speechable Settings page.
So I set my language, set my default voice. It looks like it's trying to pull some data for the voices. Just refresh this. So there's different voices. Yeah, there's different voices. It looks like it pulls the voices down every time.
So it's putting all of that. So let me turn the music off and let's listen to what that voice sounds like. Hello, this is a preview of the selected voice. Okay, that was supposed to be a male voice. Hello, this is a preview of the selected voice.
Okay, so that's cool. All right. Okay, that all looks pretty straightforward. I'm going to be honest, this how to use guide at the bottom here is very AI. So I've got a feeling to initially use the AI to build this. I've no problem with that. It's just different looks that way. So let's go and check this out on one of the posts. So if I go to posts and let's go to one of my more recent posts.
Oh, this thing didn't work properly. It does. Looks like it didn't install all the posts. There was obviously a problem somewhere. So let's go to getting ready for 2016. If I click on audio, it'll generate the audio. Let's just open up the console and see what's going to happen. We'll finish this page again.
Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and
then it's available. Automatic Code Wrangler Application. My application for a position as a code wrangler at automatic. The company started by WordPress co-founder Matt Mullenweg. Good day I've written this email in my head about five times, one for each year since 2010. So weird to hear your own words in an AI voice. OK, so that's done that. So now if I close that-- OK, so it shows a little tick button. It shows that there's audio. What happens if I click on the post? Let's see what that does.
See if there's a little option there to edit it. I'm in the Gutenberg editor. There's the audio generation area. OK, so it's the same form field basically. So it's there. I can play it. That's cool. That's really cool. I like that. I'm playing under the settings for a little bit. So let's go back into the dashboard. Let's go back into the settings. Okay, so let's say it's more of a warm voice preset.
And leave it on mail. Let's go more podcast. Let's see what podcast does. Now let's save podcasts. See what podcast sounds like. Yeah, you're downloading these things every single time, which is not great. Recall if there was somewhere you could cache them. Let's see what this sounds like.
Hello, this is a preview of the selected voice. That sounds a bit better. So I'm going to save that. I'm going to go back to that post. and I'm going to regenerate the audio. Let's see if it sounds a bit better.
So there's a couple of suggestions that I have. I'm going to share them just because It's my stream. I would do a couple of things. I would move the hooker illustrations into separate functions and maybe look at calling them once, once the plugin is initialized. Can't speak English apparently. I would look at moving away from HX requests
and use REST API if you can. But that's just a personal preference. I just like using REST API requests. I've built in permission checks and all that kind of stuff. What else would I do? I would... all of the HTML that you've got in these render, in these kind of things, I would look at pulling that in from a file somewhere maybe. So put this in like a templates file and get the data that way. You don't seem to have any...
any PHP variables in there, so there's no reason you couldn't put that into a templates file then, and just make your code a little bit cleaner. But what else? Oh yes. I would see if there's a way that you could actually download the models to the upload directory as well. What you could even do is on your plugin activation, create a folder in the upload directory called speechable. And then inside of there, create like a models and audio recordings and whatever. And then you can always clean that folder up if the user wants to, the setting somewhere.
You can clean up that folder. The other thing you could do is put it to the media library. That's another way you could do it. And then the user can clean up the media themselves quite easily. It just means you won't have to base 64 decode on the front end, you'll just load the audio file. And that'll be a lot quicker. I will also try and figure out a way to load all the models, not up front. I like the idea of loading them as you need them, but then once you've downloaded it, instead of running in the browser, maybe look at putting it into that folder in the plugin
or in the WordPress app directory, because it'll just make it easier for the settings pages to work. So that's all I would do there. Your code is nice and clean. I can read it. So that's great. Again, here lots of HTML that could possibly be in a template somehow. I'm not a big fan of mixing and matching HTML and PHP and a JavaScript plugin file. I prefer to separate things out a bit if I can. But that's just the personal preference. And then I would just try and see if I could reuse existing
WordPress functionality. either the data form. Data form is a good example of that. It'll allow you to create a settings page using core WordPress components. And... I actually used this recently. You basically just declare your data, your fields, et cetera, return the data form component and you're good to go. And you're really using JavaScripts, so that might work for you. So maybe check that out. If you wanna do that, there was a really good
think he's published it. It was a really good blog post on the core developer blog. How to use data form to create plugin pages, plugin settings pages. I would recommend checking that out. I've used it myself recently. It's just that it's just a lot less code to have to manage. If you can use data form and Robert's the developer talks you through the whole process. I liked the fact that you're checking whether or not it has audio data. Well then. Looks like you're using Piper TTS audio and you've got Ostromove it probably.
So I totally get that. So I'd like that, I like the fact that you're doing that. I didn't have any major, and so again, lots of HTML. Is this the saving of the audio? I would see if I could store that. I would look at trying to install that as an attachment. Maybe not an attachment on the post, but just an element in the media library, and then just store the attachment ID to the audio. And then you just get the attachment ID, get the path to the file, and then just render it on the front of the--
I think it's a great idea. I love the fact that you're doing this with open source models. And then, yeah, the other thing, as I mentioned, if the title is part of the-- I would maybe either not include the title in the audio generation, or if it isn't the title, figure out how to do that little bouncy thing on the title as well. The only really major ones that I think are major are if you can, trying to figure out how to get the local models stored somewhere in the WordPress site so they don't every time, saving the file and then the front end thing that I mentioned to you. Those are
the only sort of really big bugs that I could see. So well done man. I think it is very cool when developers try these things out. Build things, new things, test things, have fun with things. Alright, with that folks, I'm off. Have a good one. Bye., My First AI Plugin Review, YouTube, 01kgnpwkmfepw7d76v7y717kaa.