Skip to content

gl_talk: language code detection #86

@retowyss

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.

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