Я получаю следующее 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);