2012-11-13 99 views
1

我正在Silverlight中創建一個需要讀取其內容的應用程序。我正在使用WCF服務將內容發送到服務器端,然後將此代碼合成文本到語音。將流轉換爲WMA

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都支持這兩者。

我會很感激任何幫助。謝謝。

+0

說真的沒有人可以幫忙嗎? :( –

回答

0

這可能值得一看Windows Azure媒體服務。 http://www.windowsazure.com/en-us/home/features/media-services/

,提供「現場直播」,這你可以有可能與您的音頻使用。我已經爲此進行了點播,但沒有進行直播,而且這很容易。只要將您的媒體上傳到「雲端」,它就會進行編碼併爲您提供端點。然後,您可以在Silverlight媒體元素中使用此端點來獲取流式媒體。