NAudio UnspecifiedError при вызове .StartRecording () - PullRequest
0 голосов
/ 26 июня 2019

Я получаю следующее 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,5-мм микрофона
  • Использование игровой гарнитуры с микрофоном

Версии NAudio через Nuget

  • версия 1.9.0 (опубликовано в апреле 2019 г.)
  • версия 1.8.5 (опубликовано в октябре 2018 года)
  • версия 1.8.4 (опубликовано в декабре 2017 года)

DeviceNumber

  • 0 (единственное значение, которое не вызывает исключение BadDeviceId)
  • 1, 2, 3 (все из которых выдают исключение BadDeviceId)

Проверка параметров NAudio.Wave.WaveFormat()

Param1: Частота дискретизации - 16000 (так как это значение «по умолчанию» содержится в образце кода Google Cloud - информация в нижней части этого поста) - 44100 (действительно дефактная частота дискретизации, если это не сработает, будет ли частота дискретизации?)

Param2: Биты - Я попытался указать перегрузку с тремя параметрами, где я явно указывал 16 бит, но безрезультатно

Param3: Каналы - 1 (должно быть верно, учитывая, что обе мои микрофоны являются монофоническими входами) - 2 (проверено на достоверность)

И, наконец, я также попытался полностью закомментировать строку кода waveIn.WaveFormat = new NAudio.Wave.WaveFormat(...);, которая использует новый экземпляр по умолчанию WaveFormat, проверенный через Console.WriteLine() как канал 16 бит / 8 кГц / 1. Но все равно безрезультатно.

Спасибо за помощь.


Обновление: TLDR - не зависит от GCP.

Я перемещаю сюда всю информацию, связанную с Google Cloud, поскольку она предоставляет некоторую контекстную информацию, но было доказано, что она не оказывает прямого влияния на полученную мной ошибку NAudio.

Я пытаюсь заставить функциональность потоковой передачи аудио Google Cloud Speech to Text работать. У меня есть функция public static async Task<object> StreamingMicRecognizeAsync(int seconds), определенная, как можно найти в Документах Google Cloud здесь .

В отдельной асинхронной функции я запускаю следующую строку кода, которая содержит код, вызывающий waveIn.StartRecording().

object r = await StreamingMicRecognizeAsync(15);
...