Skip to content

gl_talk: language code detection #86

Description

@retowyss

For text to speech, the Neural2 voices require passing of the full language code (en-GB, en-US, ...) not just the first two letters (en, ...).

Error in `abort_http()`:
! http_400 Requested language code 'en' doesn't match the voice 'en-GB-Neural2-F''s language code 'en-gb'. Either pick a different voice, or change the requested language code to en-gb.

The gl_talk implementation forces the languageCode to be derived from the first two letters of the name parameter, so there's no way to overcome this.

if (!is.null(name)) {
        assert_that(is.string(name))
        languageCode <- substr(name, 1, 2)
        gender <- NULL
    }

I can submit a fix but there are multiple ways this could be resolved.

a) Check whether name contains "Neural", if so grab first 5 characters for languageCode
b) add parameter to force supplied languageCode parameter force_languageCode = FALSE (?)

Drawback of a) is it requires code updates to the code for every model that requires the full languageCode.

b) doesn't look elegant, but it will never break existing code. Particularly, it can be passed through text2speech::tts_google's ... parameter.

I'd prefer the function never overwrites the languageCode, but that surely is a breaking change.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions