I am trying to build a sample which send a very short sentence (less than 100 char) google tts service which returns a audio stream. I am trying to save this stream into a file but when open it, Buf after writing following file, i am able to open it in real player but it only utters first letter (first letter of the sentence sent to google tts). There might be a problem in saving file, I never dealt with Audio in Code so please take a look and suggest some better code.
WebRequest request = WebRequest.Create(string.Format("http://translate.google.com/translate_tts?q={0}", Uri.EscapeUriString(textBox1.Text.Trim())));
request.Method = "GET";
try
{
WebResponse response = request.GetResponse();
if (response != null && response.ContentType.Contains("audio"))
{
Stream stream = response.GetResponseStream();
byte[] buffer = new byte[response.ContentLength];
stream.Read(buffer, 0, (int)response.ContentLength);
FileStream localStream = new FileStream("audio.mp3", FileMode.OpenOrCreate);
localStream.Write(buffer, 0, (int)response.ContentLength);
stream.Close();
localStream.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Maybe you need to loop while reading from the response stream:
int read = 0;
while ( read < response.ContentLength )
{
read += stream.Read(buffer, 0, ( response.ContentLength - read ) );
}