Получение нулевого байтового аудиопотока при преобразовании текста в речь 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
ответ (без исключений), однако аудиопоток пуст:
Чего не хватает?
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();
}
}
}
Я верю, что все, что вам нужно сделать, это очистить поток перед сохранением (или даже увидеть длину)
response.AudioStream.CopyTo(destination);
destination.Flush();
посмотрим, поможет ли это вам.