我发现很难找到一种方法将使用 OpenTk.NetStandard 捕获的音频存储到 NetCore C# 中的正确 .WAV 文件中。
我正在寻找的是一种在 Raspberry pi 上运行时可以工作的解决方案,因此 NAudio 或任何 Windows 特定方法都无法解决我的问题。
我发现了其他几个 SO 答案,它们显示了如何使用 opentk 捕获音频,但没有关于如何将其存储在 wav 文件中。
这是代码的摘录,它应该从我从另一个 SO 问题中获取的麦克风中读取数据,我看到 AudioCapture 类是:
const byte SampleToByte = 2;
short[] _buffer = new short[512];
int _sampling_rate = 16000;
double _buffer_length_ms = 5000;
var _recorders = AudioCapture.AvailableDevices;
int buffer_length_samples = (int)((double)_buffer_length_ms * _sampling_rate * 0.001 / BlittableValueType.StrideOf(_buffer));
using (var audioCapture = new AudioCapture(_recorders.First(), _sampling_rate, ALFormat.Mono16, buffer_length_samples))
{
audioCapture.Start();
int available_samples = audioCapture.AvailableSamples;
_buffer = new short[MathHelper.NextPowerOfTwo((int)(available_samples * SampleToByte / (double)BlittableValueType.StrideOf(_buffer) + 0.5))];
if (available_samples > 0)
{
audioCapture.ReadSamples(_buffer, available_samples);
int buf = AL.GenBuffer();
AL.BufferData(buf, ALFormat.Mono16, buffer, (int)(available_samples * BlittableValueType.StrideOf(_buffer)), audio_capture.SampleFrequency);
AL.SourceQueueBuffer(src, buf);
// TODO: I assume this is where the save to WAV file logic should be placed...
}
}
任何帮助将不胜感激!