首页 文章

语音/语音到文本[关闭]

提问于
浏览
17

我需要一个API或库(最好是免费的),它将通过麦克风将语音/语音转换为文本(字符串) .

另外,我需要一个可以进行文本到语音转换的API或库 .

我想使用C#和.NET,但其他语言就足够了 .

谢谢 .

6 回答

  • -1

    每个Windows操作系统中都有一个用于Text2Speach的内置DLL . 你会在c:\ Programs \ Shared Folders \ Microsoft Shared \ Speech \ sapi.dll(sAPI - speach api)中找到相应的dll - 我不太确定路径 - 但无论如何你可以搜索sapi.dll .

    之后,您可以使用以下代码段

    SpVoice oVoice = new SpVoice();
    oVoice.Voice = oVoice.GetVoices("","").Item(0); // 0 indicating what kind of speaker you want
    oVoice.Volume = 50;
    oVoice.Speak("hello world", SpeechVoiceSpeakFlags.SVSFDefault);
    oVoice = null;
    
  • 15

    您可以使用CMU Sphinx,因为它是非常开放和可扩展的解决方案,我认为它可以在客户端和服务器端使用:

    http://cmusphinx.sourceforge.net/

    如果您正在寻找Microsoft桌面解决方案,那么您可以使用SAPI:

    http://msdn.microsoft.com/en-us/magazine/cc163663.aspx

    在服务器端,您可以使用Microsoft统一通信,但也要考虑许可:

    http://www.microsoft.com/uc/en/gb/default.aspx

    更新:

    这个帖子也有一些很好的参考:

    C# Speech Recognition - Is this what the user said?

  • 2

    以下是使用C#和System.Speech从语音转换为文本的完整示例

    代码可分为两个主要部分:

    配置处理SpeechRecognized和SpeechHypothesized事件的SpeechRecognitionEngine对象(及其所需元素) .

    Step 1: Configuring the SpeechRecognitionEngine

    _speechRecognitionEngine = new SpeechRecognitionEngine();
    _speechRecognitionEngine.SetInputToDefaultAudioDevice();
    _dictationGrammar = new DictationGrammar();
    _speechRecognitionEngine.LoadGrammar(_dictationGrammar);
    _speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
    

    此时,您的对象已准备好开始从麦克风转录音频 . 但是,您需要处理某些事件,以便实际访问结果 .

    Step 2: Handling the SpeechRecognitionEngine Events

    _speechRecognitionEngine.SpeechRecognized - = new EventHandler(SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized - = new EventHandler(SpeechHypothesizing); _speechRecognitionEngine.SpeechRecognized = new EventHandler(SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized = new EventHandler(SpeechHypothesizing); private void SpeechHypothesizing(object sender,SpeechHypothesizedEventArgs e){///来自引擎字符串的实时结果realTimeResults = e.Result.Text; } private void SpeechRecognized(object sender,SpeechRecognizedEventArgs e){///来自引擎字符串finalAnswer = e.Result.Text的最终答案; }

    而已 . 如果您想使用预先录制的.wav文件而不是麦克风,则可以使用

    _speechRecognitionEngine.SetInputToWaveFile(pathToTargetWavFile);

    代替

    _speechRecognitionEngine.SetInputToDefaultAudioDevice();

    这些课程中有许多不同的选项,值得更详细地探讨 .

    http://ellismis.com/2012/03/17/converting-or-transcribing-audio-to-text-using-c-and-net-system-speech/

  • 0

    Using c++ to call and use Windows Speech Recognition

    哪个说:

    Microsoft为Windows的客户端和服务器版本提供语音识别引擎 . 两者都可以用C语言或.NET语言编程 . 用C编程的传统API称为SAPI . 客户端和服务器语音的.NET框架名称是System.Speech和Microsoft.Speech .

    SAPI文档 - http://msdn.microsoft.com/en-us/library/ms723627(VS.85).aspx

    用于客户端识别的.NET命名空间是System.Speech - http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx . Windows Vista和7包括语音引擎 .

    用于服务器识别的.NET命名空间是Microsoft.Speech,10.2版本的完整SDK可在http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4获得 . 语音引擎是免费下载的 .

    很多早期的问题都解决了这个问题 . 有关示例,请参见Prototype based on speech recognitiongetting started with speech recognition and speech synthesisSAPI and Windows 7 Problem .

  • 10

    对于文本到语音转换,您必须遵循3个步骤:

    1.添加System.Speech参考 .

    2.添加 Headers :

    使用System.Speech;

    使用System.Speech.Synthesis;

    3.添加以下代码,其中textBox1是文本框的默认名称 .

    SpeechSynthesizer speaker = new SpeechSynthesizer();
                speaker.Rate = 1;
                speaker.Volume = 100;
                speaker.Speak(textBox1.Text);
    
  • -1

    I'd like to use C# and .NET, but other languages will suffice. 如果您对 C++ Festival开放,请选中此项

相关问题