Mycroft + Rpi4 (arm64) + Mimic3

I’m starting this thread to get help setting up Mimic3 on a Mycroft instance installed on a Raspberry Pi4 using the arm64 architecture.

Assumption 1: I have Mycroft already installed and working. It is a registered device on Mycroft.ai. and I have installed a few skills.

Assumption 2: I have installed Mimic3 using the latest release at: Releases · MycroftAI/mimic3 · GitHub

Assumption 3: I can now use Mycroft as designed and having installed Mimic3 I have access to the command-line commands:
mimic3, mimic3-download, mimic3-server and all are independently working as designed.

HELP NEEDED:

  1. I have read thru the various documentations.
  2. Perhaps I missed something, but the help examples I have seen assume one has installed the mimic3 plugin using the pip install method.
  "tts": {
    "module": "mimic3_tts_plug",
    "mimic3_tts_plug": {
        "voice": "en_US/cmu-arctic_low",
        "speaker": "rms",
        "length_scale": 0.8,
        "noise_scale": 0.667,
        "noise_w": 0.8
    }
  }
  1. When trying to install Mimic3 there is an onnxruntime conflict for my architecture as of the time of the writing of this post. I got around this by installing Mimic3 via the arm64 link listed above. I have Mimic3 installed now, so I’m not so concerned about resolving this conflict for this post!

  2. As the example code above shows, it assumes that I have the modulized plugin “mimic3_tts_plug” installed… which I assume I don’t, since I didn’t install Mimic3 via the python pip module method.

  3. I believe that to also use this code as written, I would have had to first downloaded the “rms” voice (Sounds like “Richard M. Stallman”? !!!) using the mimic3-download command and have installed it in my user’s .local directory.

  4. I am not sure the complete command line syntax to install a Mimic3 voice.

  5. I am unsure as to how the above code should be written for my instance to use the Mimic3 voice given that I have Mimic3 installed, but I did not install it as a plugin.

I hope I have given enough information to get the help I am looking for. I can edit the configs and the particulars. I’m just looking for how to get it setup for the Raspberry Pi4, not using Pycroft, or the pip installation?

Once I have a working setup for my instance I will edit my original post to show the steps necessary to recreate my successful setup so that others might be help too.

1 Like

Here is my mycroft.conf file. I am editing it using the preferred command:
mycroft-config edit user

{
  "max_allowed_core_version": 21.2,


#  "tts": {
#    "voice": "en_US/vctk_low#p303",
#    "lengthScale": 1.2
#  }

  "tts": {
    "module": "mimic3_tts",
    "mimic3_tts": {
        "voice": "en_US/cmu-arctic_low",
        "speaker": "rms",
        "length_scale": 0.8,
        "noise_scale": 0.667,
        "noise_w": 0.8
    }
  }

}


Note: I have commented out the working tts instance so that the mimic3 instance will be chosen. The commented out tts instance, “en_US/vctk_low#p303” is using the mimic2 engine, I believe.

Since I don’t have the voice, “en_US/cmu-arctic_low” with speaker, “rms” downloaded and installed my instance of mycroft falls back to the mimic1 engine.

In the code above I used “tts_mimic3” instead of “tts_mimic3_plug” because the command-line command, “mimic3 -h” shows it’s usage as “tts_mimic3”

usage: mimic3_tts [-h] [--remote [REMOTE]] [--stdin-format {auto,lines,document}] [--voice VOICE] [--speaker SPEAKER] [--voices-dir VOICES_DIR] [--voices]
                  [--output-dir OUTPUT_DIR] [--output-naming {text,time,id}] [--id-delimiter ID_DELIMITER] [--interactive] [--csv] [--csv-delimiter CSV_DELIMITER]
                  [--csv-voice] [--mark-file MARK_FILE] [--noise-scale NOISE_SCALE] [--length-scale LENGTH_SCALE] [--noise-w NOISE_W]
                  [--result-queue-size RESULT_QUEUE_SIZE] [--process-on-blank-line] [--ssml] [--stdout] [--preload-voice PRELOAD_VOICE] [--play-program PLAY_PROGRAM]
                  [--cuda] [--deterministic] [--seed SEED] [--version] [--debug]
                  [text ...]

Hi @mshelby, Mimic 3 should automatically download a voice the first time you use it. So you shouldn’t have to run mimic3-download beforehand (if you did though, it would be mimic3-download en_US/cmu-arctic_low)

For your mycroft.conf, you will need to use “mimic3_tts_plug”. Your original attempt looks right to me, so I would need to see what errors are present in /var/log/mycroft/audio.log to know how to help more.

When installing the plugin or Mimic 3, it may be helpful to do it like this:

mycroft-pip install -f 'https://synesthesiam.github.io/prebuilt-apps/' ...

I have some pre-built wheels for the onnxruntime there. Hopefully this will help with your conflicts.

Thanks for the info! I’ll try this later this week & follow up here.

Also, it sounds as if you are saying that the correct name is ‘mimic3_tts_plug’ whether you are using the pip module, or the arm64 debian instance? It’s a plugin either way?

If you do the Debian install, you get the mimic3 and mimic3-server commands on your system. The plugin needs to be installed via pip into Mycroft’s virtual environment separately.