Получение аудиопотока с нулевым байтом при преобразовании текста в речь Amazon Polly

Я пытаюсь преобразовать текст в речь, используя Amazon Web Services Polly и AWS SDK для C#. Я попытался очень простое преобразование:

AmazonPollyClient client = new AmazonPollyClient("secret", "secret", Amazon.RegionEndpoint.USEast1);
Amazon.Polly.Model.SynthesizeSpeechRequest request = new SynthesizeSpeechRequest();
request.OutputFormat = OutputFormat.Mp3;
request.Text = "This is my first conversion";
request.TextType = TextType.Text;
request.VoiceId = VoiceId.Nicole;
Amazon.Polly.Model.SynthesizeSpeechResponse response = client.SynthesizeSpeech(request);

Я получаю ответ HTTP 200 OK (исключения не выдаются), однако аудиопоток пуст:

Пустой аудиопоток 1 Пустой аудиопоток 2

Чего не хватает?


person Howiecamp    schedule 13.01.2017    source источник


Ответы (2)


Возвращенный AudioStream не имеет длины, пока вы не прочитаете его где-нибудь, например, в файле:

using System;
using System.IO;
using Amazon;
using Amazon.Polly;
using Amazon.Polly.Model;
namespace AwsPollySO1
{
    class Program
    {
        public static void Main(string[] args)
        {
            AmazonPollyClient client = new AmazonPollyClient("yourID", "yourSecretKey", RegionEndpoint.USEast1);
            SynthesizeSpeechRequest request = new SynthesizeSpeechRequest();
            request.OutputFormat = OutputFormat.Mp3;
            request.Text = "This is my first conversion";
            request.TextType = TextType.Text;
            request.VoiceId = VoiceId.Nicole;
            SynthesizeSpeechResponse response = client.SynthesizeSpeech(request);
            Console.WriteLine("ContentType: " + response.ContentType);
            Console.WriteLine("RequestCharacters: " + response.RequestCharacters);
            FileStream destination = File.Open(@"c:\temp\myfirstconversion.mp3", FileMode.Create);
            response.AudioStream.CopyTo(destination);
            Console.WriteLine("Destination length: {0}", destination.Length.ToString());
            destination.Close();
            Console.Read();
        }
    }
}
person Lester Buck    schedule 28.01.2017

Я верю, что все, что вам нужно сделать, это очистить поток перед сохранением (или даже увидеть длину)

response.AudioStream.CopyTo(destination);
destination.Flush();

посмотрите, поможет ли это вам.

person Patrick Dengler    schedule 10.06.2017