その内容を読み取る必要があるアプリケーションを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によってサポートされているためです。
助けていただければ幸いです。ありがとう。