Изменить голос в чате через BrowserWebSpeech - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь включить опцию Text to Speech в Microsoft Webchat и использовал опцию createBrowserWebSpeechPonyfillFactory.

Как изменить голос для этой опции?я хочу использовать женский голос для «en-US», но он всегда воспроизводится с использованием мужского голоса.

Пробовал приведенный ниже код, но это не помогло

    async function speechServicesPonyfillFactory() {
        const speechServicesPonyfillFactory = await window.WebChat.createBrowserWebSpeechPonyfillFactory();

        return options => {

            const ponyfill = speechServicesPonyfillFactory(options);

            var speechSynthesisUtterance = ponyfill.SpeechSynthesisUtterance;
            var speechSynthesis = ponyfill.speechSynthesis;
            var voices = speechSynthesis.getVoices();

            speechSynthesisUtterance.voice = voices.filter(function(voice) { return voice.name == 'Microsoft Zira Desktop - English (United States)'; })[0];
            return {
                SpeechGrammarList: ponyfill.SpeechGrammarList,
                SpeechRecognition: ponyfill.SpeechRecognition,
                speechSynthesis: speechSynthesis,
                SpeechSynthesisUtterance: speechSynthesisUtterance
            }
    };
};

1 Ответ

0 голосов
/ 20 сентября 2019

Вы можете передать метод selectVoice в качестве опоры для веб-чата, чтобы выбрать голос, который вы хотите использовать.Посмотрите фрагмент кода ниже и образец веб-чата Select Voice для получения более подробной информации.Кроме того, вот список голосов Веб-чат поддерживает.

window.WebChat.renderWebChat(
  {
    directLine: window.WebChat.createDirectLine({ token }),
    selectVoice: (voices, activity) =>
      // If the activity is in zh-HK, use a voice with keyword "TracyRUS" (Cantonese).
      // Otherwise, use "JessaNeural" (preferred) or "Jessa".
      activity.locale === 'zh-HK'
        ? voices.find(({ name }) => /TracyRUS/iu.test(name))
        : voices.find(({ name }) => /JessaNeural/iu.test(name)) ||
          voices.find(({ name }) => /Jessa/iu.test(name)),
    webSpeechPonyfillFactory
  },
  document.getElementById('webchat')
);

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...