синтез речи не может заставить мобильное сафари изменить голос - PullRequest
0 голосов
/ 17 мая 2018

У меня есть веб-приложение speech.synthesis, которое работает хорошо, но я хочу изменить текст на мужской голос и наоборот. Он отлично работает на настольных компьютерах Chrome и Mac , но я не могу заставить его работать на мобильных устройствах iOS (iPhone 11.3.1), как на iphone, так и на ipad. Вот соответствующий бит (реакция):

 createSpeech(text) {
    let speech = new SpeechSynthesisUtterance(text);
    let gender = this.state.gender;

    speech.volume = 1; 
    speech.rate =  1;  
    speech.pitch = 1;  
    speech.lang = 'en-US';
    speech.voice = voices[gender];
    speech.voiceURI = voices[gender].voiceURI;

    return speech;
  }

Голоса загружаются (один мужчина и одна женщина) в переменную, называемую голосами. Это работает. Затем указанный бит запускается в каждом предложении.

Опять же, это прекрасно работает на настольных компьютерах Chrome и Mac, которые я тестировал . Однако на моем iPhone я всегда получаю голос по умолчанию, установленный на самом телефоне.

Странно то, что я могу переключиться на другой язык, отличный от английского, скажем на итальянский или испанский, и получить правильный голос, но английский всегда играет только как внутренний голос по умолчанию.

Кто-нибудь знает, ПОЧЕМУ это происходит? Это ошибка? Я что-то пропустил? Кто-нибудь получил iphone, чтобы получить другой голос на английском языке, кроме одного набора?

1 Ответ

0 голосов
/ 29 мая 2018

SpeechSynthesisUtterance нужна поддержка браузера для предоставления разных голосов. Другими словами, браузер решает, какой голос синтезировать.

Поэтому нормально видеть, что звук в разных системах и браузерах различается, потому что фундаментальная поддержка также различна.

Если вы хотите иметь фиксированный голос на разных платформах, вы бы предпочли использовать онлайн API.

У этого парня также есть некоторые исследования: http://ejb.github.io/2015/06/07/html5-speech-synthesis-api.html

...