Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NAudio在调用时未指定错误。StartRecording()_C#_Audio_Google Cloud Platform_Naudio - Fatal编程技术网

C# NAudio在调用时未指定错误。StartRecording()

C# NAudio在调用时未指定错误。StartRecording(),c#,audio,google-cloud-platform,naudio,C#,Audio,Google Cloud Platform,Naudio,当到达NAudio.Wave.WaveInEvent对象实例上的waveIn.StartRecording()方法时,我收到以下UnspecifiedError: NAudio.MmException:“调用waveInOpen时未指定错误” 适用的NAudio规范如下: var waveIn = new NAudio.Wave.WaveInEvent(); waveIn.DeviceNumber = 0; waveIn.WaveFormat = new NAudio.Wave.WaveForm

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

NAudio.MmException:“调用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
因为这是一个没有具体说明的错误,我没有太多的东西要说。以下是我到目前为止在故障排除中尝试的内容:

耳机

  • 使用3.5毫米麦克风中的线路
  • 使用游戏耳机麦克风
通过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(因为它是本文底部谷歌云示例代码-info中包含的“默认”值) -44100(真正的实际采样率,如果这不起作用,会有采样率吗?)

参数2:位 -我尝试提供3参数重载,在这里我显式地提供了16位,但仍然没有效果

参数3:频道 -1(如果我的两个话筒都是单声道输入,则应该正确) -2(经过良好测量测试)

最后,我还尝试了对waveIn.WaveFormat=new NAudio.Wave.WaveFormat(…)进行完整的注释代码行,使用默认的新实例<代码>波形格式,通过
控制台验证。WriteLine()
为16位/8kHz/1通道。但还是无济于事

谢谢你的帮助


更新:TLDR-不受GCP影响

我正在将所有与谷歌云相关的信息移到这里,因为它提供了一些上下文信息,但已被证明不会直接影响我收到的NAudio错误

我正在尝试让谷歌云语音到文本流音频功能正常工作。我有
公共静态异步任务StreamingMicRecognizeAsync(int seconds)
函数,可以在中找到

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


你能在不涉及任何谷歌云语音代码的情况下重现异常吗?如果是这样的话,也许值得这样做,并在问题中提供一个答案。(听起来这可能发生在任何RPC之前,所以我怀疑这不是语音库,但最好能得到确认。)@JonSkeet我已经验证了这是可以复制的,只有问题底部的NAudio代码。GoogleCloud语音代码包含我发布的代码(以及它附加的处理函数),但根本问题必须在NAudio内部,没有GoogleCloud,因为最小的可复制代码示例。对。我个人建议在这一点上删除所有的GCP部分-它们可能会让任何了解NAudio的人感到不快,但不了解GCP。我现在也在
WaveFormat()
方法中测试了一些不同的参数值。我正在更新问题以详细说明这些测试,但简而言之,除了Google Cloud code示例附带的“默认”
16000
之外,我还尝试了采样率
44100
,以及显式传递16位和通道传递1&2(尽管1应该是正确的值,因为我拥有的两个话筒都是单声道的).我已经更新了这个问题,在NAudio而不是GCP上集中重新定义了这个问题。你能在不涉及任何谷歌云语音代码的情况下重现这个例外吗?如果是这样的话,也许值得这样做,并在问题中提供一个答案。(听起来这可能发生在任何RPC之前,所以我怀疑这不是语音库,但最好能得到确认。)@JonSkeet我已经验证了这是可以复制的,只有问题底部的NAudio代码。GoogleCloud语音代码包含我发布的代码(以及它附加的处理函数),但根本问题必须在NAudio内部,没有GoogleCloud,因为最小的可复制代码示例。对。我个人建议在这一点上删除所有的GCP部分-它们可能会让任何了解NAudio的人感到不快,但不了解GCP。我现在也在
WaveFormat()
方法中测试了一些不同的参数值。我正在更新问题以详细说明这些测试,但简而言之,除了Google Cloud code示例附带的“默认”
16000
之外,我还尝试了采样率
44100
,以及显式传递16位和通道传递1&2(尽管1应该是正确的值,因为我拥有的两个话筒都是单声道的).我已经更新了这个问题,在NAudio而不是GCP上集中重新定义了这个问题。
object r = await StreamingMicRecognizeAsync(15);