Docker image + picotts

I’m setting up a tts service on my hass instance. I tested it in 0.35 with the Google service, and it worked fine. Having the opportunity to get rid of an internet-dependent service, I’ld like to switch to picotts now that 0.36 has been released.

However, the Docker image doesn’t have the required dependency:

17-01-15 22:46:20 ERROR (Thread-11) [homeassistant.components.tts.picotts] 'pico2wave' was not found
17-01-15 22:46:20 ERROR (MainThread) [homeassistant.components.tts] Error setting up platform picotts
Traceback (most recent call last):
  File "/usr/src/app/homeassistant/components/tts/__init__.py", line 116, in async_setup_platform
    tts.async_register_engine(p_type, provider, p_config)
  File "/usr/src/app/homeassistant/components/tts/__init__.py", line 248, in async_register_engine
    provider.hass = self.hass
AttributeError: 'bool' object has no attribute 'hass'

Is there any way to use the picotts component with the Docker image?

Thanks.

1 Like

The docker image is based around a debian distribution hosted off of telldus.com, and unfortunately libttspico0 isn’t in there. In lieu of completely messing with the apt sources, you can just grab the relevant deb files from mint/debian/etc… and load them into docker. Something like the following worked for me on mint… but ymmv.

apt-get download libttspico-data
docker cp libttspico-data* home-assistant:/tmp.deb
docker exec home-assistant dpkg -i /tmp.deb
docker exec rm /tmp.deb

and then repeat for libttspico0, libpopt0, and libttspico-utils

1 Like

I just want to “bump” this topic to state my desire for this feature as well. Pico seems to be the only offline TTS solution and I like to not give all my data to Google (otherwise I’d be using Google Home instead!), so having it included in the docker image would be great.

Were you ever able to get this working in docker?

The long-term solution is simply ask home assistant developers to include picotts into the formal docker image.

It can be a bit tricky. Because the developer really need to prevent feature creep or the home assistant docker will be too big in size. Where to draw the line is a very difficult to answer.

Personally, I think an offline tts engine should be the core feature of home assistant. Then again, I am not the one calling the shot.

In the mean time, someone can try to create a home assistant image with picotts built-in.

I have created a docker image with built-in picotts in it on x86_64 platform, base on the STABLE version of home assistant. You are welcome to download it from docker hub if you want to give it a try.

This is not a long term solution. It is something I did for my own use to get by for the time being.

If you would like to have native picotts library built into the official docker image, please vote for the feature request, and/or tell me what is the better way to get developer’s attention to include this feature into the official build. This should be a relatively easy thing to fix for the developer.