Роботизированный голосовой стиль с помощью Microsoft Speech Service

Я работаю над приложением, в котором мы хотим попробовать robot voice для взаимодействия с пользователем вместо текущих стандартных голосов голосовых служб. Это сделало бы приложение более увлекательным, так как наш бот будет разговаривать с детьми.

Заявка должна быть написана на бразильском португальском языке. Вопросов:

  1. Есть ли встроенная языковая модель, которая могла бы сделать это для pt-BR?

  2. Если нет, можно ли настроить стандартный голос через SSML или C #?

Предложения тоже приветствуются!


person Amintas Lopes Neto    schedule 31.01.2020    source источник


Ответы (1)


Вы можете изучить использование espeak для создания голоса, звучащего как робот. Вы также можете сделать это в SSML, используя параметр «range» с элементом prosody. В настоящее время только механизмы Microsoft (облако Azure, SAPI5 и WinRT Windows.Media.Speech) поддерживают атрибут «диапазон».

Пример:

<speak version="1.0" xml:lang="pt-BR">
    <prosody pitch="x-low" range="-100%">All your base are belong to us</prosody>
</speak>
person Luke    schedule 31.01.2020
comment
Спасибо! Не уверен, почему следующая реализация C # не работает: string SSML = "<speak version=\"1.0\" "; SSML += "xml:lang=\"pt-BR\"> "; SSML += "<prosody pitch=\"x-low\" range=\"-100%\"> Olá Bem vindo ao Bit Bot </prosody> "; SSML += "</speak>"; await turnContext.SendActivityAsync("**Olá Bem vindo ao Bit_Bot!**", SSML, cancellationToken: cancellationToken); Ошибка не возникла, но мой бот просто не говорит. Голосовой вызов работает нормально, если SSML не передается. Согласно документации метода SendActivityAsync (botframework V4), он работает с SSML. Мысли? - person Amintas Lopes Neto; 01.02.2020
comment
Кстати, мне удалось заставить SSML работать. Его нужно называть так var SSML = "<emphasis level=\"strong\">Olá Bem vindo ao Bit Bot!</emphasis>";await turnContext.SendActivityAsync("**Olá Bem vindo ao Bit_Bot!**", SSML, cancellationToken: cancellationToken);. Теперь задача состоит в том, чтобы найти правильную комбинацию параметров SSML, которая будет создавать стиль голоса робота, который я искал. Не могли бы вы намекнуть на это? Спасибо - person Amintas Lopes Neto; 04.02.2020
comment
Я не знаком с фреймворком для ботов, но похоже, что вы бы использовали (на основе моего предложения): var SSML = "<prosody pitch=\"x-low\" range=\"-100%\">Olá Bem vindo ao Bit Bot!</prosody>". - person Luke; 06.02.2020
comment
Спасибо. Тоже пробовал. Похоже, служба речи Azure просто игнорирует атрибут диапазона. Сервис должен быть в порядке, так как это последняя доступная версия. Я начинаю подозревать, что веб-странице, вызывающей бота, для этого потребуется некоторая работа с javascript. Есть ли какой-нибудь инструмент, который я мог бы использовать для проверки моего вызова TTS без веб-бота? - person Amintas Lopes Neto; 06.02.2020
comment
Да! Я думал, вы используете .NET-код. Вот пример использования powershell - разметка ssml будет работать с это (просто убедитесь, что вы заключили в теги <speak>. Вы захотите ввести в Google пространства имен System.Speech ИЛИ Windows.Media.SpeechSynthesis.SpeechSynthesizer, чтобы реализовать себя. Однако, если вы работаете в Интернете, возможно, вам следует использовать mespeak или espeak - person Luke; 07.02.2020
comment
Очень круто. Далее буду изучать, как адаптировать его к веб-ресурсам. Спасибо! - person Amintas Lopes Neto; 13.02.2020