MaryTTS Docker Not Working?

I am trying to set up MaryTTS and I am running the docker run command from the docs, but it never completes and I get the following error standard_init_linux.go:211: exec user process caused "exec format error". Any ideas how to fix?

What hardware / software are you trying?

RPi 3B+ with a matrix voice

MaryTTS docker is only available for amd64, so that is causing the error.
You cannot use it on a Pi.

Check this topic as well:

Can’t you just Start the precompiled jar file? That’s how I’ve done it yet on ubuntu. Gotta try to run the server standalone without docker on my pi tomorrow.

Whomp whomp :cry:, oh well, i’ll just have to stick with pico. thanks!

How does one go about that? The installation docs are surprisingly sparse in my research

1 Like

I’ve downloaded marytts zip file. Unzip it and run the marytts-server file as: ./marytts-server

Afterwards you’ll see the web UI at localhost:59125

Awesome! I’ll give it a try tonight. Thanks!

Tim

Is it working for you?

I’ve managed to move everything in a docker container. So in case someone wants to setup marytts as well in docker I’ll share my config:

At first create a dockerfile containing these lines:

Note: Label is as far as I know not mandatory.

FROM ubuntu:16.04

LABEL yourName <yourEmail>

RUN mkdir marytts && \
    apt-get update && \
    apt-get install -y unzip && \
    apt-get install -y default-jre && \
    apt-get install -y wget && \
    apt-get clean
RUN wget https://github.com/marytts/marytts/releases/download/v5.2/marytts-installer-5.2.zip

RUN unzip marytts-installer-5.2.zip && \
    rm marytts-installer-5.2.zip && \
    cd marytts-installer-5.2
RUN chmod +x ./marytts

WORKDIR /marytts-installer-5.2
RUN ./marytts install:bits1-hsmm
CMD ["./marytts"]
EXPOSE 59125

configure the last RUN command as you like. I’m using a german voice so if you want a different one just change bits1-hsmm to any other voice tag (that’s what I used as basis for my configuration: MaryTTS voice tags)

Use a terminal to navigate into the folder which is containing the just created dockerfile.
Next run docker image build -t yourImageName:yourVersionNumber .

Screenshot 2020-03-17 at 19.23.43

Next create a file called docker-compose.yml and fill in following lines:

version: "3"

services:
    marytts:
        image: yourImageName:yourVersionNumber
        ports:
            - 59125:59125
        restart: always

Adjust your image name and version number, save the file and navigate into the folder containing this file.

Run docker-compose up -d

This command will start the container we’ve just build and start maryTTS.
After some seconds or minutes, depending on your hardware you can navigate to localhost:59125 or if you’re just connected using ssh: IPADRESS_OF_YOUR_PI:59125

I hope it works out for everyone.

Have a good time and watch yourself in times of corona.

2 Likes

Is anyone using marytts and is having voice output? My docker image running like a charm but there is just no output from marytts.

curl http://192.168.0.2:59125/process?INPUT_TEXT=Es+ist+17+Uhr+48&INPUT_TYPE=TEXT&AUDIO=WAVE&OUTPUT_TYPE=AUDIO&LOCALE=de_DE&VOICE=bits1-hsmm | aplay
[1] 18575
[2] 18576
[3] 18577
[4] 18578
[5] 18579
ALSA lib pcm_hw.c:1903:(_snd_pcm_hw_open) card is not defined
aplay: main:828: audio open error: Invalid argument
[2]   Done                    INPUT_TYPE=TEXT
[3]   Done                    AUDIO=WAVE
[4]-  Done                    OUTPUT_TYPE=AUDIO
[5]+  Done                    LOCALE=de_DE

I don’t get whats the problem. Respeaker USB Mic Array is working. Mic is fine and if I click the wake button I can hear the signal.

Is someone having similiar issues?

EDIT. by the way using espeak works fine. Output is coming from the headphone jack at the Respeaker USB Mic Array

Hello @Bozor ,

I’m not quite sure, but maybe access to the microphone / speaker from a docker container is limited. To allow Rhasspy to access my Jabra 510, the docker-compose is as follows (devices:…):

  rhasspy:
    image: "synesthesiam/rhasspy-server:latest"
    container_name: Rhasspy
    .. blabla
    devices:
        - "/dev/snd:/dev/snd"

Maybe this helps?

I’ll play around tomorrow. Thanks for the hint

Yeah, I’d orientate myself by the documentary for the Rhasspy Docker Container. Good success!

rhasspy:
    image: "synesthesiam/rhasspy-server:latest"
    restart: unless-stopped
    volumes:
        - "$HOME/.config/rhasspy/profiles:/profiles"
    ports:
        - "12101:12101"
    devices:
        - "/dev/snd:/dev/snd"
    command: --user-profiles /profiles --profile en

I got this working by using @Bozor suggestion. But I don’t use it because my wife didn’t like the voice the best. Switched back to wavenet

1 Like

Would you mind sharing your dockerfile and docker-compose file? My sound output is still not working

I’m using MarryTTs in docker on same machine as rhasspy with german voice:
Here are docker-compose files and relevant profiles.json entries
1.) If you are using different language than english, you have to add locale in rhassy profile.json
I use two german voices, located in same folder as docker-compose file
(voice-bits1-hsmm, voice-bits3-hsmm)
2.) --log-level ERROR reduces log entries

"text_to_speech": {
    "marytts": {
        "locale": "de",
        "url": "http://10.2.254.1:59125",
        "voice": "bits3-hsmm",
        "effects": {
            "effect_F0Add_selected": "on",
            "effect_F0Add_parameters": "f0Add:30.0;"
        }
    },

rhasspy:
image: "synesthesiam/rhasspy-server:latest"
hostname: rhasspy-server
container_name: rhasspy-server

restart: unless-stopped
privileged: true

ports:
    - "12101:12101"

volumes:
    - "/opt/rhasspy/profiles:/profiles"

command: --user-profiles /profiles --profile de --log-level ERROR

marytts:
image: synesthesiam/marytts:5.2
container_name: marytts
hostname: marrytts-server

restart: unless-stopped

ports:
- "59125:59125"

volumes:
 - "./marytts-5.2/lib/voice-bits1-hsmm-5.2.jar:/marytts/lib/voice-bits1-hsmm-5.2.jar"
 - "./marytts-5.2/lib/voice-bits3-hsmm-5.2.jar:/marytts/lib/voice-bits3-hsmm-5.2.jar"
1 Like

Dear @kaykoch, @Bozor

Thanks for the great instructions! With this information I have built my first docker container. And it works great almost right away!
The only issue was that in the manual of @Bozor the voice bits3-hsmm was used, I overlooked this in the beginning when I took over the Rhasspy configuration from @kaykoch With bits1-hsmm instead of bits3-hsmm it works great.

@Bozor: I did not use the option with:
devices:
- “/dev/snd:/dev/snd”
There were moments when I didn’t have voice output via Rhasspy, but this was a configuration problem.

Thanks for the information - I wanted to get away from pico tts for a long time and I am very happy with Mary. :star_struck:

1 Like

@kaykoch Where did you download the voices

  • voice bits1-hsmm-5.2.jar
  • voice-bits3-hsmm-5.2.jar

Which one do you find better? Are there any other alternative german voices for MaryTTS?

First of all:
I used docker image

synesthesiam/marytts:5.2

as descriped here

Right now, I try to create my own docker image. Thanks @Bozor

In this description, there is also a script to download translation files.
If you only want to download German files:


First is female (used for my wakeword: COMPUTER)
Second is male (used for my wakeword JARVIS)
Create a folder (marytts-5.2) in your docker-compose folder, unzip the zip files in (xx.jar):

 volumes:
 - "./marytts-5.2/lib/voice-bits1-hsmm-5.2.jar:/marytts/lib/voice-bits1-hsmm-5.2.jar"
 - "./marytts-5.2/lib/voice-bits3-hsmm-5.2.jar:/marytts/lib/voice-bits3-hsmm-5.2.jar"