调用.StartRecording()时出现NAudio UnspecifiedError

时间:2019-06-26 20:28:06

标签: c# audio google-cloud-platform naudio

UnspecifiedError对象实例上到达waveIn.StartRecording()方法时,我收到以下NAudio.Wave.WaveInEvent

  

NAudio.MmException:'UnspecifiedError调用waveInOpen'

适用的NAudio代码如下:

var waveIn = new NAudio.Wave.WaveInEvent();
waveIn.DeviceNumber = 0;
waveIn.WaveFormat = new NAudio.Wave.WaveFormat(16000, 1);

waveIn.StartRecording(); // Here's where the Exception is thrown

由于这是一个UnspecifiedError,所以我没有太多事情要做。到目前为止,这是我在故障排除中尝试过的方法:

耳机

  • 使用3.5mm直插麦克风
  • 使用游戏耳机麦克风

通过Nuget的NAudio版本

  • 版本1.9.0(于2019年4月发布)
  • 版本1.8.5(于2018年10月发布)
  • 版本1.8.4(于2017年12月发布)

设备编号

  • 0(仅不会引发BadDeviceId异常的值)
  • 1、2、3(均引发BadDeviceId异常)

NAudio.Wave.WaveFormat()的参数测试

参数1:采样率 -16000(因为它是Google Cloud示例代码中包含的“默认”值-这篇文章底部的信息) -44100(真正的实际采样率,如果这不起作用,将有任何采样率吗?)

Param2:位 -我尝试提供3参数重载,其中我明确提供了16位,但仍然无济于事

Param3:频道 -1(鉴于我的两个麦克风均为单声道输入,应该是正确的) -2(经过良好测试)

最后,我还尝试完全注释掉waveIn.WaveFormat = new NAudio.Wave.WaveFormat(...);行代码,该行使用WaveFormat的默认新实例,并通过Console.WriteLine()验证为16位/ 8kHz / 1通道。但仍然无济于事。

感谢您的帮助。


更新:TLDR-不受GCP影响。

我正在将与Google Cloud有关的所有信息移到此处,因为它提供了一些上下文信息,但是事实证明,它不会直接影响我收到的NAudio错误。

我正在尝试使用Google Cloud语音转文本流音频功能。我定义了Google's Cloud docs here中的public static async Task<object> StreamingMicRecognizeAsync(int seconds)函数。

在一个单独的异步函数中,我运行以下代码行,其中包含调用waveIn.StartRecording()的代码。

object r = await StreamingMicRecognizeAsync(15);

0 个答案:

没有答案