C#SpeechSynthesizer使服务响应 [英] C# SpeechSynthesizer makes service unresponsive

查看:454
本文介绍了C#SpeechSynthesizer使服务响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有如下因素代码

[WebMethod]
public byte[] stringToWav(string text)
{
    SpeechSynthesizer ss = new SpeechSynthesizer();
    MemoryStream ms = new MemoryStream();
    ss.SetOutputToWaveStream(ms);
    ss.Speak(text);
    return ms.ToArray();
}

和服务没有返回值。任何想法,为什么出现这种情况?

and the service returns nothing. Any idea why this happens?

推荐答案

我遇到了与ASHX页面完全一样的问题。

I ran into the same exact problem with an ashx page.

我完全不明白为什么,但似乎你需要使用一个单独的线程并等待它完成。

I don't understand exactly why, but it seems that you need to use a separate thread and wait for it to complete.

下面的代码为我工作:

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;
}

这篇关于C#SpeechSynthesizer使服务响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆