В данной статье мы рассмотрим работу с сервисом Amazon Polly. Он позволяет работать с множеством языков. Мы будем посылать текст и получать в итоге готовый mp3 файл.
Ранее я уже писал статью о том, как озвучить текст в C# при помощи встроенных средств. Её вы можете найти тут.
Для работы мы создадим простое консольное приложение. После его создания установите через NuGet библиотеку AWSSDK.Polly.
В приложении необходимо будет указать ключ доступа, а также секретный ключ от аккаунта AWS. Вы можете получить эти данные по этой ссылке в вашем аккаунте в секции «Access keys». Если у вас нет аккаунта Amazon Web Services, то на момент написания статьи имеется возможность создать его бесплатно, а также использовать сервис Amazon Polly с некоторыми ограничениями без оплаты. Вы можете это уточнить на сайте AWS.
Ниже привожу прокомментированный программный код:
using Amazon; using Amazon.Polly; using Amazon.Polly.Model; using Amazon.Runtime; using System; using System.IO; namespace TextToSpeech { class Program { static void Main(string[] args) { // указываем данные используемого аккаунта BasicAWSCredentials awsCredentials = new BasicAWSCredentials("AccessKeyID", "SecretAccessKey"); // создаём объект класса AmazonPollyClient, // передавая данные аккаунта и указывая используемый регион AmazonPollyClient amazonPollyClient = new AmazonPollyClient(awsCredentials, RegionEndpoint.EUCentral1); // создаём объект запроса SynthesizeSpeechRequest synthesizeSpeechRequest = MakeSynthesizeSpeechRequest(); // получаем ответ от AWS Polly SynthesizeSpeechResponse synthesizeSpeechResponse = amazonPollyClient.SynthesizeSpeech(synthesizeSpeechRequest); CreateMp3File(synthesizeSpeechResponse.AudioStream); } // метод создания запроса для озвучивания текста private static SynthesizeSpeechRequest MakeSynthesizeSpeechRequest() { // создаём объект запроса SynthesizeSpeechRequest synthesizeSpeechRequest = new SynthesizeSpeechRequest(); // передаём необходимый текст synthesizeSpeechRequest.Text = "Небольшой фрагмент текста для его озвучивания"; // указываем код передаваемого языка synthesizeSpeechRequest.LanguageCode = LanguageCode.RuRU; // указываем выходной формат synthesizeSpeechRequest.OutputFormat = OutputFormat.Mp3; // указываем желаемый голос synthesizeSpeechRequest.VoiceId = VoiceId.Tatyana; return synthesizeSpeechRequest; } // метод для создания mp3 файла private static void CreateMp3File(Stream audioStream) { // указываем путь к сохраняемому mp3 файлу const string pathToMp3 = "F:\\test.mp3"; using (FileStream fileStream = File.Create(pathToMp3)) { audioStream.CopyTo(fileStream); fileStream.Flush(); fileStream.Close(); } } } }