用naudio记录uwp中的语音
我正在尝试使用naudio在uwp中录制用户语音。以下是初始化naudio以捕获并写入磁盘的代码:用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
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();
}