core: Unknown parameter in input: "Engine" - Amazon Polly tts

Home Assistant release with the issue:

arch	armv7l
dev	false
docker	true
hassio	false
os_name	Linux
python_version	3.7.4
timezone	Europe/London
version	0.100.1
virtualenv	false

Last working Home Assistant release (if known):

0.99.3

Operating environment (Hass.io/Docker/Windows/etc.):

Client: Docker Engine - Community
 Version:           19.03.3
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        a872fc2
 Built:             Tue Oct  8 01:12:14 2019
 OS/Arch:           linux/arm
 Experimental:      false

 Kernel Version: 4.19.66-v7l+
 Operating System: Raspbian GNU/Linux 10 (buster)
 OSType: linux
 Architecture: armv7l
 CPUs: 4
 Total Memory: 3.814GiB

 docker image: homeassistant/raspberrypi4-homeassistant

Integration:

https://www.home-assistant.io/integrations/amazon_polly/

Description of problem:

Amazon Polly is broken as of build version 0.100.0b1. I get the error below whenever I make a tts request.

I have updated my configuration.yaml for neural support as detailed in the docs. Apologies if I am a bit premature on raising this issue but I waited for release 0.100 which produced the same error.

My region is ‘eu-west-1’ which is compatible this feature.

2019-10-10 20:17:15 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.2887036368] Parameter validation failed:
Unknown parameter in input: "Engine", must be one of: LexiconNames, OutputFormat, SampleRate, SpeechMarkTypes, Text, TextType, VoiceId, LanguageCode


Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):


 - platform: amazon_polly
    aws_access_key_id: !secret aws_access_key_id
    aws_secret_access_key: !secret aws_secret_access_key
    region_name: !secret aws_region
    text_type: ssml
    voice: Amy
    sample_rate: 24000 
    engine: neural

Traceback (if applicable):


Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 133, in handle_call_service
    connection.context(msg),
  File "/usr/src/homeassistant/homeassistant/core.py", line 1233, in async_call
    await asyncio.shield(self._execute_service(handler, service_call))
  File "/usr/src/homeassistant/homeassistant/core.py", line 1258, in _execute_service
    await handler.func(service_call)
  File "/usr/src/homeassistant/homeassistant/components/tts/__init__.py", line 152, in async_say_handle
    p_type, message, cache=cache, language=language, options=options
  File "/usr/src/homeassistant/homeassistant/components/tts/__init__.py", line 326, in async_get_url
    engine, key, message, use_cache, language, options
  File "/usr/src/homeassistant/homeassistant/components/tts/__init__.py", line 337, in async_get_tts_audio
    extension, data = await provider.async_get_tts_audio(message, language, options)
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/homeassistant/homeassistant/components/amazon_polly/tts.py", line 238, in get_tts_audio
    VoiceId=voice_id,
  File "/usr/local/lib/python3.7/site-packages/botocore/client.py", line 357, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python3.7/site-packages/botocore/client.py", line 634, in _make_api_call
    api_params, operation_model, context=request_context)
  File "/usr/local/lib/python3.7/site-packages/botocore/client.py", line 682, in _convert_to_request_dict
    api_params, operation_model)
  File "/usr/local/lib/python3.7/site-packages/botocore/validate.py", line 297, in serialize_to_request
    raise ParamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError: Parameter validation failed:
Unknown parameter in input: "Engine", must be one of: LexiconNames, OutputFormat, SampleRate, SpeechMarkTypes, Text, TextType, VoiceId, LanguageCode

Additional information:

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 6
  • Comments: 37 (10 by maintainers)

Most upvoted comments

Upstream seems to be moving along on this nicely. Fingers crossed it’ll be in the next beta.

I can confirm this is broken as well. I have a pretty extensive TTS and it broke with the 100 release. I get the following error:

botocore.exceptions.ParamValidationError: Parameter validation failed:
Unknown parameter in input: "Engine", must be one of: LexiconNames, OutputFormat, SampleRate, SpeechMarkTypes, Text, TextType, VoiceId, LanguageCode

Going to watch this for a bit before reverting back… I can test if needed.

Okay. I think I’ve got it. There are some library conflicts. The aws component installs aiobotocore which installs an older version of botocore which breaks boto3 (polly).

I don’t see a compatible library match. aiobotocore installs botocore 1.12.189 boto3==1.9.233 installs botocore 1.12.248

But I don’t know how to fix it 😃

Remember to remove this fix before updating HA! I completely forgot I used the fix @tatunts mentioned and it broke polly. removed it from my CC folder and we’re back to normal! I probably spent an hour on something I should have remembered doing!

Everyone, if you can please test the fix and report back. The powers that be would like it tested before merging. amazon_polly is tested, but aws and route53 have not. https://github.com/home-assistant/home-assistant/pull/28217

Thanks @tatunts! This worked, my Polly integration is functioning again (until this makes it into an official HA release anyway). Cheers!

Check your startup log. You shall see a message saying you are using a non-tested component. If you don’t have the message, something is missing and you are using the broken old component.

Also, make sure your manifest file indicates boto3==1.9.252 and not boto3==1.9.233

@llluis @tatunts it is working fine now!! Thanks!!

Working, thanks @tatunts

I’m still getting this error in 0.101.1

It’s not yet integrated in the official release.