Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dependency conflict installing plugin through mycroft-pip #1

Open
martini1992 opened this issue Jul 1, 2022 · 2 comments
Open

Dependency conflict installing plugin through mycroft-pip #1

martini1992 opened this issue Jul 1, 2022 · 2 comments

Comments

@martini1992
Copy link

Upon running mycroft-pip install mycroft-plugin-tts-mimic3
the following error occurs:

ERROR: Cannot install mycroft-plugin-tts-mimic3 because these package versions have conflicting dependencies.

The conflict is caused by:
    mycroft-mimic3-tts 0.2.3 depends on onnxruntime<2.0 and >=1.6
    mycroft-mimic3-tts 0.2.2 depends on onnxruntime<2.0 and >=1.6

I am running a fully updated version of picroft on a Pi4 (32bit)

Full output

$ mycroft-pip install mycroft-plugin-tts-mimic3
Collecting mycroft-plugin-tts-mimic3
  Downloading mycroft_plugin_tts_mimic3-0.1.5.tar.gz (8.5 kB)
  Preparing metadata (setup.py) ... done
Collecting mycroft-mimic3-tts<1.0
  Downloading mycroft_mimic3_tts-0.2.3.tar.gz (130 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 130.9/130.9 kB 1.9 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Collecting dataclasses-json<1.0
  Downloading dataclasses_json-0.5.7-py3-none-any.whl (25 kB)
Collecting epitran==1.17
  Downloading epitran-1.17-py2.py3-none-any.whl (153 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 154.0/154.0 kB 2.6 MB/s eta 0:00:00
Collecting espeak-phonemizer<2.0,>=1.0
  Downloading espeak_phonemizer-1.1.0.tar.gz (18 kB)
  Preparing metadata (setup.py) ... done
Collecting gruut<3.0,>=2.3.0
  Downloading gruut-2.3.4.tar.gz (74 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 74.1/74.1 kB 2.1 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Requirement already satisfied: numpy<2.0 in /home/pi/mycroft-core/.venv/lib/python3.7/site-packages (from mycroft-mimic3-tts<1.0->mycroft-plugin-tts-mimic3) (1.19.1)
Collecting mycroft-mimic3-tts<1.0
  Downloading mycroft_mimic3_tts-0.2.2.tar.gz (130 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 130.6/130.6 kB 2.8 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
INFO: pip is looking at multiple versions of mycroft-plugin-tts-mimic3 to determine which version is compatible with other requirements. This could take a while.
Collecting mycroft-plugin-tts-mimic3
  Downloading mycroft_plugin_tts_mimic3-0.1.4.tar.gz (8.5 kB)
  Preparing metadata (setup.py) ... done
ERROR: Cannot install mycroft-plugin-tts-mimic3 because these package versions have conflicting dependencies.

The conflict is caused by:
    mycroft-mimic3-tts 0.2.3 depends on onnxruntime<2.0 and >=1.6
    mycroft-mimic3-tts 0.2.2 depends on onnxruntime<2.0 and >=1.6

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
@fluidvoice
Copy link

MycroftAI/mimic3#10 (comment)

@heflores
Copy link

heflores commented Jul 12, 2022

I am new to MyCroft as I had a RPi4 laying around not doing anything so I figured I'd check it out. I started off with the PiCroft image and had the same issue when I went to check out Mimic3. I found a community post talking about being on a 32-bit ARM OS, and that I would need to install the wheel from his repository which had multiple versions. I was able to do so by downloading "onnxruntime-1.9.1-cp37-cp37m-linux_armv7l.whl" using wget and then using mycroft-pip to install it. Afterwards I was able to get mimic3 install using the mycroft-pip wrapper like you did and it did install.

But of course it still didn't work! I then ran into other issues afterwards because the PiCroft image is based on Buster and libstdc++6 isn't up to date and you run into another dependency error when trying to use it. It needs libstdc++6.0.26 and only 6.0.25 is loaded based on the libstdc++6 that is available in the buster repository. You can verify this by looking through the /var/logs/mycroft/audio.log file when the service is starting. I downloaded 6.0.28 manually (since I couldn't find 6.0.26) and put it in the same folder (/usr/lib/arm-linux-gnueabihf/ IIRC) and changed the symlink to point to it and restarted the service. I just ended up with another set of errors popping up in the logs and defaulting back to Mimic 1.

I guess you could try and do a release upgrade to bullseye to see if this would resolve itself, but I prefer to keep things simple. So I then scrapped everything and installed the 64-bit Raspbian OS based on bullseye and then followed the instructions for installing MyCroft on linux by using git to clone the repo and used the .sh script to install. Once installed, started up mycroft and made sure everything was working and paired it with my account, used mycroft-stop all and then mycroft-pip install mycroft-plugin-tts-mimic3 and everything loaded up just fine. I did have to download the "en_US/cmu-arctic_low" voice first before the plugin would actually load during the audio start up.

I have also found that the wake detection is much snappier using the 64-bit OS, but the RTF is not that great on the Pi4 like the Wiki says. I am currently trying to figure out how to make MyCroft use the Mimic 3 instance I have running on my R420 using docker instead so I can get faster responses. I can use the Marytts plugin and point it to my server, but then you can't choose the speaker, you just get the default speaker. It is really isn't that slow on the Pi4 using the cmu-arctic_low, but I think the hifi-tts_low sounds better and my server can get an RTF of about .12 without any GPU support.

TL;DR: The current PiCroft image is 32-bit and the onnxruntime package is not readily available for 32-bit OS's. Ideally PiCroft should be updated to Raspbian 64-bit (based on Bullseye) so that the onnxruntime is installed automatically and there is no follow on libstdc++6 dependency issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants