Chrome Android текст в речь, не меняя язык - PullRequest
0 голосов
/ 24 июня 2019

Приведенный ниже код отлично работает на рабочем столе Chrome, но в Chrome Android он не использует указанный msg.lang. Французский текст читается так, как будто это был английский, с американским акцентом. Язык моего телефона по умолчанию английский, это имеет значение? Я хочу, чтобы страница читалась на выбранном языке независимо от того, какие настройки пользователь установил на своем телефоне.

    const msg = new SpeechSynthesisUtterance();
    msg.volume = 1; 
    msg.text = text; // these words are in French
    msg.lang = 'fr-FR';
    speechSynthesis.speak(msg);

1 Ответ

0 голосов
/ 24 июня 2019

Изменение дефиса на подчеркивание исправило его, то есть с 'fr-FR' на 'fr_FR'.

В документации https://w3c.github.io/speech-api/#tts-section указано, что код должен быть "BCP 47",который указывает тире.

Однако в этой статье указывается, что в некоторых мобильных реализациях используется подчеркивание: https://manu.ninja/using-the-speech-synthesis-interface-of-the-web-speech-api

Таким образом, подчеркивание исправило его.И подчеркивание работает и на настольном Chrome.

Я не буду отмечать этот ответ как принятый, если есть лучший ответ.

...