[英]C# SpeechSynthesizer makes service unresponsive
我有以下代碼
[WebMethod]
public byte[] stringToWav(string text)
{
SpeechSynthesizer ss = new SpeechSynthesizer();
MemoryStream ms = new MemoryStream();
ss.SetOutputToWaveStream(ms);
ss.Speak(text);
return ms.ToArray();
}
並且該服務什么都不返回。 知道為什么會這樣嗎?
我遇到了與ashx頁面完全相同的問題。
我不明白為什么,但似乎你需要使用一個單獨的線程並等待它完成。
以下代碼對我有用:
public byte[] TextToBytes(string textToSpeak)
{
byte[] byteArr = null;
var t = new System.Threading.Thread(() =>
{
SpeechSynthesizer ss = new SpeechSynthesizer();
using (MemoryStream memoryStream = new MemoryStream())
{
ss.SetOutputToWaveStream(memoryStream);
ss.Speak(textToSpeak);
byteArr = memoryStream.ToArray();
}
});
t.Start();
t.Join();
return byteArr;
}
你調試並檢查了ms.ToArray()
的值嗎? ms.ToByteArray()
可能會更好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.