C# を使用して PC のオーディオ ラインから継続的にサンプリングしたい (そのデータを処理する)。サンプリングを行う最良の方法は何ですか?
4 に答える
オープン ソースのNAudio .NET オーディオ ライブラリを使用して、(基本的な) オーディオ キャプチャを実行できます。NAudioDemo プロジェクトを見て、WaveIn 関数を使用して WAV ファイルに録音する簡単な例を確認してください。NAudio には、WASAPI (Windows Vista 以降) と ASIO (サウンドカードに ASIO ドライバーがある場合) を使用してオーディオをキャプチャする機能も含まれています。
Alvas Audioライブラリもありますが、無料ではありません。料金を支払わないと画面がしつこくなりますが、美しく機能します。そして、ドキュメントは素晴らしく、バグなどを見つけた場合は、サポートも問題ありません。
.NET フレームワークにはサウンドを処理するための組み込みライブラリはありませんが、Win32 を使用している場合は、DirectSound などのアンマネージ ライブラリを使用してサウンドを処理できます。
Ianier Munoz が、CodeProject のP/Invoke 経由でwaveInを使用して C# で全二重オーディオ プレーヤーを作成する方法を示します。彼は、マネージド DirectSoundをより一般的な方法として挙げています。
マネージ DirectX は、オーディオの直接キャプチャをサポートし、非常に使いやすいですが、サポートされなくなり、昨年 DirectX SDK から削除されました。2007 年 8 月以前のバージョンの SDK をインストールすることで、引き続き入手することができます。
要件を厳密に満たすわけではありませんが、より堅牢なアプローチは、ネイティブ C++ DirectSound API の周りに C++/CLI ラッパー アセンブリを作成することです (これも DirectX SDK から)。これは、C# コードから直接呼び出すことができます。C++ と COM の知識が必要ですが、これは確実に強力で保守しやすい方法です。
私は過去にこれらの手法の両方を使用しましたが、どちらもうまく機能します。