SpeechSynthesis не может установить голос на устройствах iOS

Я использую реакцию, и вот некоторый код для TTS (текст в речь). Он отлично работает на Windows и macOS, а также на некоторых версиях устройств iOS. Но для некоторых устройств iOS настройка голоса просто не работает.

<a
    className="button"
    onClick={() => {
      var u = new SpeechSynthesisUtterance();
      var voices = speechSynthesis.getVoices();

      const voice = voices.filter(voice => {
        return voice.lang === "zh-CN";
      });
      u.voice = voice[0];
      u.lang = "zh-CN";
      u.text = "1234";
      speechSynthesis.speak(u);
    }}
>
    Speak!!
</a>


Вот что я получил в результате отладки. Если я использую getVoices(), я могу получить много голосов (включая те, которые мне нужны). Но установка свойства lang или свойства voice в произнесении просто не имеет никакого эффекта. И всегда будет использоваться системный голос по умолчанию.

Это какая-то ошибка в системе iOS? Если да, то есть ли обходные пути? Как какие-то компоненты на реакцию?


person AndrewZ    schedule 02.11.2018    source источник


Ответы (1)


Похоже, эта проблема характерна для системы iOS 12. Пришлось перейти на AWS Polly.

person AndrewZ    schedule 05.11.2018