Say next : nothing happens. Chromium

Hi, after installing lipsurf, nothing happens when I speek.
Everything seems ok, icon voice control enabled, microphone permission is green (and tooltip on tab say it’s used), on ubuntu sound system parameter I can see the input level changing when I speak.

Ubuntu 18.04 LTS, Chromium Version 71.0.3578.80 (Build officiel) Built on Ubuntu , running on Ubuntu 18.04 (64 bits). I disabled all other chromium extensions.

I tried many times, reinstalling…, nothing. Your application is exactly what I am looking for, thanks in advance

Hey Pat!

Sorry about the problems you’re experiencing. LipSurf will work fine on Ubuntu, but you need to install the official Chrome rather than Chromium (deb can be obtain here: Chromium does not yet support certain components LipSurf uses like the webspeech API.

Let me know how it goes on the official Chrome browser, and sorry you had to go through so much troubleshooting. The next version will have a warning for those who install on unsupported browsers!

Hi mikob,
Thanks for your quick feedback, effectively it’s better with chrome… :slight_smile:

Just a parenthesis, I was thinking “how to select my favorites with my voice”, your last feature “shortcuts” or “synonyms” is a workaround, it’s also a workaround for missing translations (I am french). I will continue to discover…

1 Like


Glad you got it working. It would be fantastic if you could contribute your French translations. This is the github repo:

I will be happy to guide you on how if you’re interested.

I am very enthusiastic with lipsurf, exactly what I wanted to do if I add lose my job :-). Nevertheless I will find free time and I am ready to help.
I will try to follow your instructions ( and will let you know if I face any problem. Feel free to contact me, even by email :

1 Like

Here is the error when I add HelloWorld plugin (note that only .js files are filtered when searching for plugins ,.mjs should be added :-)).
Error in F12 :
Uncaught (in promise) TypeError: Cannot read property ‘Plugin’ of undefined
at addLocalPlugin (options.js:42)

1 Like

Thanks for letting me know. I’ve just fixed this in 1.8.2 which I’ve also just released (

Your fix is ok, well done :-).
In my side I followed your example (, added with a french command inside, increased the plugin version to 1.0.1, converted into mjs (I can see my french command inside). Importation of new plugin is ok, I see version 1.0.1, but I cannot switch to french in general language. If you have any idea…?
Small piece of my final mjs

// lipsurf-plugins/src/HelloWorld/HelloWorld.ts
var HelloWorldPlugin;
(function (HelloWorldPlugin) {

})(HelloWorldPlugin || (HelloWorldPlugin = {}));
// lipsurf-plugins/src/HelloWorld/ = {
niceName: “Bonjour tt le monde”,
description: “plugin affiche 1 message si on dit bonjour sur le domaine”,
commands: {
“Bonjour”: {
name: “Commande Bonjour”,
match: “Bonjour”

export { HelloWorldPlugin };

1 Like


Sorry for the delayed response, I was busy with the 1.9 updates.

I need to make the language selector dynamic based on what plugins users have installed. I will do that and get back to you soon. Also, there’s some issues with your translation module. The correct version should be something like below (untested):

// lipsurf-plugins/src/HelloWorld/
/// <reference path="../@types/plugin-interface.d.ts"/>
import { HelloWorldPlugin } from "./HelloWorld"; = {
    niceName: "Bonjour tt le Monde",  // in English, we title-case this, but in French maybe it's unusual?
    description: "Plugin affiche 1 message si on dit bonjour sur le domaine",
    commands: {
        "Hello World": {              // this should be the name of the English equivalent command
            name: "Bonjour tt le Monde",
            match: "bonjour"          // match strings should always be lowercase

Hi Miko, Ok no problem, let me know as soon as you have the functionality ready.
I changed my quick translations to match your advises, and also added command description translation, I suppose you will need it :

commands: {
    "Respond": {
        name: "Réponse",
        description: "Répond avec bon sens à l'utilisateur final",
        match: "bonjour"

When I will translate I suppose you will give me the current source file containing all commands in english or russian or …?