Я хочу включить аудиозапись в свое приложение UWP. Запись должна быть сохранена в файл WAV и должен иметь частоту дискретизации свойств 16000, 16 бит, моно (требуется для задач распознавания речи). Поскольку библиотеки, такие как CSCore и NAudio, похоже, не работают для приложений UWP, я попытался использовать MediaCapture API.
Вот мой код:
MediaCapture mediaCapture = new MediaCapture();
var settings = new MediaCaptureInitializationSettings
{
AudioDeviceId = device.Id,
StreamingCaptureMode = Windows.Media.Capture.StreamingCaptureMode.Audio,
};
await mediaCapture.InitializeAsync(settings);
var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile file = await localFolder.CreateFileAsync("audio.wav", CreationCollisionOption.GenerateUniqueName);
await mediaCapture.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateWav(AudioEncodingQuality.Auto), file);
Я пытался использовать следующий код для установите AudioEncodingProperties
, но он всегда выдает ошибку:
var controller = mediaCapture.AudioDeviceController;
var properties = controller.GetMediaStreamProperties(MediaStreamType.Audio) as AudioEncodingProperties;
properties.SampleRate = 16000;
properties.BitsPerSample = 16;
properties.ChannelCount = 1;
// the following line fails with System.Exception "The request is invalid in the current state."
await controller.SetMediaStreamPropertiesAsync(MediaStreamType.Audio, properties);
Любая помощь очень ценится!