将流转换为WMA

时间:2012-11-13 16:35:15

标签: c# .net silverlight audio stream

我在Silverlight中创建一个需要读取其内容的应用程序。我正在使用WCF服务向服务器端发送内容,然后有这个代码来合成文本到语音。

public class SpeechService
{
  [OperationContract]
  public byte[] StartSpeak(string Text)
  {
    MemoryStream ms = new MemoryStream();
    using (System.Speech.Synthesis.SpeechSynthesizer synhesizer = new System.Speech.Synthesis.SpeechSynthesizer())
    {
      synhesizer.SelectVoiceByHints(System.Speech.Synthesis.VoiceGender.NotSet, System.Speech.Synthesis.VoiceAge.NotSet, 0, new System.Globalization.CultureInfo("pl-PL"));
      synhesizer.SetOutputToWaveStream(ms);
      synhesizer.Speak(Text);
  }
  return ms.ToArray();
}

在客户端我使用此代码:http://elegantcode.com/2010/03/07/text-to-speech-in-silverlight-using-wcf/使用MediaElement向客户端播放创建的声音。

它有效,但我需要调整它,因为生成的流非常大 - 2分钟新闻超过8MB。在过去的几天里,我正在浏览网页以解决两个问题: 1.使用wcf将音频数据流式传输到Silverlight 2.在将音频发送到客户端之前压缩音频

至于问题没有。 1我不知道如何实现它:/我将使用任何帮助或想法。 最困难的事情是没有。 2是我无法将输出声音保存为文件。我需要动态编码并将压缩声音发送给客户端。据我所知,最好的想法是编码为AAC或WMA,因为MediaElement都支持这两种编码。

我将不胜感激任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

值得一看的是Windows Azure媒体服务。 http://www.windowsazure.com/en-us/home/features/media-services/

它提供了实时流媒体'您可能会使用音频。我已经按照这种方式进行了按需,但不是现场直播,而且非常容易。只需将您的媒体上传到云端,它就会编码并为您提供端点。然后,您可以在Silverlight媒体元素中使用此端点来获取流媒体。