1

その内容を読み取る必要があるアプリケーションを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を超えています。過去数日間、私は2つの問題の解決策を求めてWebを閲覧していました。1。wcfを使用してオーディオデータをSilverlightにストリーミングする2.クライアントに送信する前にオーディオを圧縮する

問題はありません。1私はそれを達成する方法がわかりません:/私は助けやアイデアを使用します。なしで最も難しいこと。2つ目は、出力音をファイルとして保存できないことです。その場でエンコードを行い、圧縮されたサウンドをクライアントに送信する必要があります。私が知っている最善のアイデアは、AACまたはWMAとしてエンコードすることです。これらは両方とも、MediaElementによってサポートされているためです。

助けていただければ幸いです。ありがとう。

4

1 に答える 1

0

Windows Azure Media Services を検討する価値があるかもしれません。http://www.windowsazure.com/en-us/home/features/media-services/

オーディオで使用できる「ライブストリーミング」を提供します。私はこれをオンデマンドで使用しましたが、ライブ、ストリーミングでは使用しませんでした。これは非常に簡単です。メディアを「クラウドに」アップロードするだけで、エンコードされてエンドポイントが提供されます。その後、Silverlight メディア要素内でこのエンドポイントを使用して、ストリーミングされたメディアを取得できます。

于 2013-04-15T04:19:38.480 に答える