smartgic / docker-mycroft

Mycroft AI Voice Assistant Docker images and docker-compose.yml files for x86_64, arm7vl and aarch64 CPU architectures.
https://hub.docker.com/u/smartgic
Apache License 2.0
41 stars 8 forks source link

Mimic3 Error #29

Closed MatthewJSalerno closed 2 years ago

MatthewJSalerno commented 2 years ago

Thank you for putting the effort into splitting this out.

Debian 11 64-bit Raspberry Pi 4 (8gb)

I've gotten the stack up and running but when I switch from mimic to mimic3 and any audio response gets generated, I get an error.

2022-09-22 15:51:39.312 | INFO     |     1 | mycroft.util.process_utils:start_message_bus_client:155 | Connected to messagebus
2022-09-22 15:51:41.970 | INFO     |     1 | mycroft.tts.tts:create:706 | Loaded plugin mimic3_tts_plug
2022-09-22 15:51:41.987 | ERROR    |     1 | mycroft.tts.tts:create:715 | The selected TTS backend couldn't be loaded. Falling back to Mimic
Traceback (most recent call last):
  File "/home/mycroft/core/mycroft/tts/tts.py", line 710, in create
    tts = clazz(tts_lang, tts_config)
  File "/opt/mycroft-venv/lib/python3.9/site-packages/mycroft_plugin_tts_mimic3/__init__.py", line 110, in __init__
    self.tts.preload_voice(voice)
  File "/opt/mycroft-venv/lib/python3.9/site-packages/mimic3_tts/tts.py", line 310, in preload_voice
    self._get_or_load_voice(key_to_load)
  File "/opt/mycroft-venv/lib/python3.9/site-packages/mimic3_tts/tts.py", line 553, in _get_or_load_voice
    maybe_model_dir = self._download_voice(voice_key)
  File "/opt/mycroft-venv/lib/python3.9/site-packages/mimic3_tts/tts.py", line 605, in _download_voice
    download_voice(
  File "/opt/mycroft-venv/lib/python3.9/site-packages/mimic3_tts/download.py", line 85, in download_voice
    voice_dir = Path(voices_dir) / voice_key
  File "/usr/lib/python3.9/pathlib.py", line 1071, in __new__
    self = cls._from_parts(args, init=False)
  File "/usr/lib/python3.9/pathlib.py", line 696, in _from_parts
    drv, root, parts = self._parse_args(args)
  File "/usr/lib/python3.9/pathlib.py", line 680, in _parse_args
    a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not NoneType
  Carnegie Mellon University, Copyright (c) 1999-2011, all rights reserved
  mimic developers, Copyright (c) 2016, all rights reserved
  version: mimic-1.1.0.9000 ()

I've tried $ mycroft-config set tts.module mimic3_tts_plug

As well as the example config from the mimic3 GitHub page

I've only started tinkering with this and I'll post any progress I make, I'm curious if anyone has gotten this working.

Thanks

MatthewJSalerno commented 2 years ago

Resolved due to an error in my config. Here's a working config.

{
  "max_allowed_core_version": 21.2,
  "hotwords": {
    "hey mycroft": {
      "module": "ovos-precise-lite",
      "model": "~/models/precise-lite-models/wakewords/en/hey_mycroft.tflite",
      "sensitivity": 0.5,
      "trigger_level": 3
    }
  },
  "tts": {
    "module": "mimic3_tts_plug",
    "mimic3_tts_plug": {
        "voice": "en_US/vctk_low",
        "speaker": "p283",
        "length_scale": 1.2,
        "noise_scale": 0.667,
        "noise_w": 1.0
    }
  }
}
goldyfruit commented 2 years ago

Awesome :+1:

MatthewJSalerno commented 2 years ago

I did find an issue when I restarted everything (docker-compose down/up). If the voices aren't cached the mimic3 will fail on startup.

If I log into the container and execute: mimic3 --voice en_US/vctk_low#p283 "test" > /tmp/output.wav it will download the voice data to /home/mycroft/.local/share/mycroft/mimic3/voices/, which gets clobbered on restart. It looks like it needs a volume like Precise-lite with a local clone of https://github.com/MycroftAI/mimic3-voices

goldyfruit commented 2 years ago

@MatthewJSalerno thanks for flagging this, could you please open a new issue with this?

goldyfruit commented 2 years ago

@MatthewJSalerno I created the issue and pushed a change, let me know in #30 if it fixed your issue.

MatthewJSalerno commented 2 years ago

I created https://github.com/smartgic/docker-mycroft/issues/31 which is pretty damn close to the latest commit. I need to clean up my system and then I'll try it out. Thanks.