C#和Microsoft Speech.Recognition and Speech.Synthesis

时间:2010-10-08 11:40:47

标签: c# speech-synthesis

我是C#的新手,我是Speech.Recognition的新手。 我搜索了很长时间的教程,但没有找到那么多,我甚至不确定我是否正确地包含了所有内容。

我下载了:

我在本地编程,我有Windows XP,.net framework 3.5。

现在我只想开始使用一些简单的代码行,比如说“hello world”或者说一两个单词作为输入。

我试过了,当然它不起作用:> 错误:

  

“无法找到”Typ-或Namespacename“SpeechSynthesizer”(是使用了Direktive还是Assemblyverweis?)“

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Speech.Recognition;
using System.Speech.Synthesis;

namespace System.Speech.Recognition { }
namespace System.Speech.AudioFormat {}
namespace System.Speech.Recognition.SrgsGrammar{}
namespace System.Speech.Synthesis { }
namespace System.Speech.Synthesis.TtsEngine { }

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            SpeechSynthesizer foo = new SpeechSynthesizer();
            foo.Speak("Test");  
        }
    }
}

编辑:

您好, 我试过你的代码,但是 使用SpeechLib; 无法找到:>

现在我写道:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Speech.Recognition;
using System.Speech.Synthesis;
using System.SpeechLib;

namespace System.SpeechLib { }
namespace System.Speech.Recognition { }
namespace System.Speech.AudioFormat {}
namespace System.Speech.Recognition.SrgsGrammar{}
namespace System.Speech.Synthesis { }
namespace System.Speech.Synthesis.TtsEngine { }

但我收到错误:

  

numericUpDown1,SpVoice,SpeechVoiceSpeakFlags,textBox1和Timeout

2 个答案:

答案 0 :(得分:3)

Project + Add Reference,.NET选项卡,选择“System.Speech”。

项目模板预先选择了几个.NET程序集。但只有常见的,如System.dll,System.Core.dll等。你必须自己添加“不寻常”的。

答案 1 :(得分:0)

你可以试试这个:

获取Interop.SpeechLib.dll

using SpeechLib;

private void ReadText(string readText)
        {
            int iCounter = 0;
            while (Convert.ToInt32(numericUpDown1.Value) > iCounter)
            {
                SpVoice spVoice = new SpVoice();
                spVoice.Speak(textBox1.Text, SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
                spVoice.WaitUntilDone(Timeout.Infinite);
                iCounter = iCounter + 1;
            }
        }