用naudio记录uwp中的语音

用naudio记录uwp中的语音,uwp,windows-10,naudio,speech,Uwp,Windows 10,Naudio,Speech,我正在尝试使用naudio在uwp中录制用户语音。以下是初始化naudio以捕获并写入磁盘的代码: sourcestream = new WasapiCaptureRT(); sourcestream.WaveFormat = new WaveFormat(8000, 8, 1); sourcestream.DataAvailable += OnDataAvailable; sourcestream.RecordingStopped += OnRecordingStopped; source

我正在尝试使用naudio在uwp中录制用户语音。以下是初始化naudio以捕获并写入磁盘的代码:

sourcestream = new WasapiCaptureRT();
sourcestream.WaveFormat = new WaveFormat(8000, 8, 1);

sourcestream.DataAvailable += OnDataAvailable;
sourcestream.RecordingStopped += OnRecordingStopped;

sourcestream.StartRecording();

file = await KnownFolders.MusicLibrary.CreateFileAsync("audio.wav", CreationCollisionOption.ReplaceExisting);
MediaEncodingProfile.CreateWav(AudioEncodingQuality.Auto);

memorystream = await file.OpenStreamForWriteAsync();

writer = new WaveFileWriterRT(memorystream, sourcestream.WaveFormat);

sourcestream.StartRecording();
但是当执行到最后的时候

memorystream = await file.OpenStreamForWriteAsync();
将引发异常并执行以下代码:

 DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
        UnhandledException += (sender, e) =>
        {
            if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
        };

    }
代码中的异常是

不支持的波形格式

我在控制台应用程序中尝试了同样的方法,一切都很好。但当我尝试在UWP中执行此操作时,上面的错误显示出来

此错误的原因是什么?

包内文件的以下代码段引发错误“不支持的波形格式”

因此,您通过代码行
sourcestream.WaveFormat=newwaveformat(8000,8,1)提供的波形格式似乎是:不受支持。像44kHz这样的波形格式可以很好地工作

sourcestream.WaveFormat = new WaveFormat(44100, 16, 1);
更新:

文件已保存,但未记录任何内容

由于您没有为
OnDataAvailable
方法提供代码,请尝试以下操作:

 private async void btnrecord_Click(object sender, RoutedEventArgs e)
 {
     sourcestream = new WasapiCaptureRT();
     sourcestream.RecordingStopped += OnRecordingStopped;
     sourcestream.DataAvailable += OnDataAvailable;
     file = await KnownFolders.MusicLibrary.CreateFileAsync("audio2.wav", CreationCollisionOption.GenerateUniqueName);
     var radomsteam = await file.OpenAsync(FileAccessMode.ReadWrite);
     streamwriter = radomsteam.AsStreamForWrite(); ();
     sourcestream.StartRecording();
 }
 private void OnDataAvailable(object sender, WaveInEventArgs e)
 { 
     writer = new WaveFileWriterRT(streamwriter, sourcestream.WaveFormat);
     writer.Write(e.Buffer, 0, e.BytesRecorded);
     writer.Flush();     
 }

谢谢我通过将采样率设置为48000使其工作。但不知何故,在windows 10的uwp中,音频录制不起作用。文件已保存,但未记录任何内容。
 private async void btnrecord_Click(object sender, RoutedEventArgs e)
 {
     sourcestream = new WasapiCaptureRT();
     sourcestream.RecordingStopped += OnRecordingStopped;
     sourcestream.DataAvailable += OnDataAvailable;
     file = await KnownFolders.MusicLibrary.CreateFileAsync("audio2.wav", CreationCollisionOption.GenerateUniqueName);
     var radomsteam = await file.OpenAsync(FileAccessMode.ReadWrite);
     streamwriter = radomsteam.AsStreamForWrite(); ();
     sourcestream.StartRecording();
 }
 private void OnDataAvailable(object sender, WaveInEventArgs e)
 { 
     writer = new WaveFileWriterRT(streamwriter, sourcestream.WaveFormat);
     writer.Write(e.Buffer, 0, e.BytesRecorded);
     writer.Flush();     
 }