【问题标题】:No microphone? SpeechRecognitionEngine SetInputToDefaultAudioDevice() problems没有麦克风? SpeechRecognitionEngine SetInputToDefaultAudioDevice() 问题
【发布时间】:2014-03-29 18:02:10
【问题描述】:

我正在 VS 2012 中开发一个允许语音输入的 C# WPF 应用程序。我使用 SpeechRecognitionEngine 而不是 SpeechRecognizer,因为后者在应用程序和 Windows 识别器之间存在一些冲突。当插入麦克风时,它工作得非常好。但是,一旦没有麦克风(我一直在禁用任何非有线音频 I/O 的公共计算机上进行测试),程序将无法正常执行:几乎所有SetInputToDefaultAudioDevice 方法之后的代码不运行。我已经使用以下代码对此进行了测试:

    private void NewWindowLoad(object sender, RoutedEventArgs e)
    {
        SpeechRecognitionEngine sre = new SpeechRecognitionEngine();

        // Accept input from the default audio device
        sre.SetInputToDefaultAudioDevice();
        MessageBox.Show("HELLO");
    }

在这种情况下,没有 MessageBox 出现。显然,这段代码被剥离到了最基本的部分——实际上,应用程序实际上对语音做了一些事情……不过,这不是问题。

我在运行该方法时没有收到任何错误或异常。发生的唯一例外是稍后调用 SpeechRecognitionEngine 的 RecognizeAsync() 方法。有没有办法在运行此代码之前检查实际上是否有可用的音频输入设备?或者,还有其他方法可以做到这一点吗?该应用程序应该能够在音频输入可能可用或不可用的任何受支持的操作系统上运行。

【问题讨论】:

    标签: c# wpf visual-studio-2012 speech-recognition speech


    【解决方案1】:

    waveInGetNumDevs 将返回波形输入设备的数量。如果为零,则没有音频输入设备。这没有直接的 C# 绑定,但 P/Invoke 非常简单:

    [DllImport("winmm.dll")]
    public static extern int waveInGetNumDevs();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 2015-03-20
      • 1970-01-01
      相关资源
      最近更新 更多