Skip to content

Orca screen reader default language does not match user display language #878

@o-alquimista

Description

@o-alquimista

What Happened?

After a fresh install of elementary 8 with English US as the default display language, Orca starts speaking Portuguese (my native language) instead. The screen reader pronunciation is terrible, as it attempts to read English sentences with a Portuguese voice; it even pronounces certain characters such as a colon as "dois pontos" and a dot as "ponto".

At no point I have selected Portuguese for this system. Everything is displayed in English, and have been since it was installed. However, I do have locale formats set to Portuguese, as you can see below in the output of locale.

LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE=pt_BR.UTF-8
LC_NUMERIC=pt_BR.UTF-8
LC_TIME=pt_BR.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=pt_BR.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=pt_BR.UTF-8
LC_NAME=pt_BR.UTF-8
LC_ADDRESS=pt_BR.UTF-8
LC_TELEPHONE=pt_BR.UTF-8
LC_MEASUREMENT=pt_BR.UTF-8
LC_IDENTIFICATION=pt_BR.UTF-8
LC_ALL=

To set the formats, I went to System Settings, Language & Region.

Screenshot of Language & Region showing English US selected as display language, and Brazil selected as the Formats locale

Steps to Reproduce

  1. Install elementary 8 and choose English US as the display language during installation and then during the initial setup for your user.
  2. While configuring my user through the System Settings app, I chose Brazil as the formats locale, while leaving English as display language. Not sure if that matters.
  3. Start the screen reader through the Quick Settings menu on the panel.

Expected Behavior

The Orca settings window (orca -s) shows Language set to en-US.

Screenshot of Orca Settings

Initially, the configuration file at ~/.local/share/orca/user-settings.conf will not contain any language definition (create a new user to test this). I'd guess that it's picking a default somehow.

Luckily, I have found a way to fix the problem.

  1. Set language to anything else. I chose Brazilian Portuguese (pt-BR).
  2. Revert to English US (en-US). It should now speak English, as expected.

After this procedure is done, the profiles section will be updated with a voices entry that specifies the selected language:

    "profiles": {
        "default": {
            "speechServerFactory": "orca.speechdispatcherfactory",
            "speechServerInfo": [
                "Default Synthesizer",
                "default"
            ],
            "voices": {
                "default": {
                    "established": true,
                    "family": {
                        "name": "default default voice",
                        "lang": "en",
                        "dialect": "US",
                        "variant": null
                    }
                },

OS Version

8.x (Circe)

OS Architecture

amd64 (on most hardwares)

Session Type

Secure Session (Wayland)

Software Version

Latest release (I have run all updates)

Log Output

Hardware Info

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions