3

OpenTk.NetStandard を使用してキャプチャしたオーディオを NetCore C# の適切な .WAV ファイルに保存する方法を見つけるのは非常に困難です。

私が探しているのは、Raspberry piで実行しているときに機能するソリューションであるため、NAudioまたはWindows固有の方法では問題が解決しません。

opentk を使用してオーディオをキャプチャする方法を示す他のいくつかの SO 回答を見つけましたが、 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...
      }

  }

どんな助けでも大歓迎です!

4

1 に答える 1