0

音響分析を行うためのコードを書きたいと思っており、その仕事に適したツールを決定しようとしています。私は通常、Python で numpy と scipy を使用し、場合によっては分析部分に Cython を使用して、このようなものを記述します。私は、Python オーディオ ライブラリの世界が少し混沌としていることに気付きました。さまざまな開発段階のパッケージが非常に限られているためです。

また、SuperCollider、Faust などのオーディオ/音響固有の言語の束に出くわしました。これらは、オーディオ処理を簡単にすると思われますが、IO と分析機能の点で制限される可能性があります。

現在、Alsa と PulseAudio がデフォルトでインストールされている Linux で作業しています。難しい要件ではありませんが、可能であれば、Jack のようなさまざまなその他のオーディオ パッケージを使用したくないと考えています。

この質問に対する私の主な関心は、より迅速なプロトタイピングとテストを提供するドメイン固有言語があるかどうか、または Python のような一般的な言語がより適切かどうかを判断することです。ありがとう。

4

3 に答える 3

4

SuperCollider と Python (Numpy の有無にかかわらず) について多くの経験があります。私は多くのオーディオ分析を行っていますが、答えはあなたが何をしたいかによって異なります。

  1. オーディオをリアルタイムで入力または出力するシステムを作成する場合、Python は適切な選択ではありません。オーディオ I/O ライブラリ (おっしゃる通り) は少し大ざっぱです。また、Python のガベージ コレクターが実際にはリアルタイム用に設計されていないという根本的な問題もあります。リアルタイムのためにゼロから設計されたシステムを使用する必要があります。SuperCollider はこれに適しています。caseyanderson が指摘するように、オーディオ分析の標準的な構成要素のいくつかはすぐそこにあります。他の環境もあります。

  2. 必ずしもリアルタイムではなく、さまざまな機械学習アルゴリズムを適用するなどのハードコアな作業を行いたい場合 (つまり、ライブ オーディオではなく WAV ファイルの読み取り/書き込みで済む場合)、汎用プログラミング言語を使用する必要があります。幅広いサポートと、必要なものを追加するための優れたライブラリのエコシステム。numpy や scikits-learn などのライブラリで Python を使用すると、これに最適です。迅速なプロトタイピングには適していますが、安定したリアルタイム オーディオが欠けているだけでなく、標準的なオーディオ ビルディング ブロックがはるかに少なくなっています。これらは、オーディオ パイプラインのプロトタイピングを妨げる 2 つの重要な要素です。

したがって、これら 2 つのオプションの間で板挟みになります。アプリケーションによっては、リアルタイム環境でオーディオ I/O を操作し、OSC メッセージングまたはシェル スクリプトを使用して外部 Python プロセスと通信することにより、2 つを組み合わせることができる場合があります。そこにある制限は、2 つの間で大量のデータを実際に投げることができないことです (すべてのオーディオを他のプロセスに賢明にパイプすることはできません。それはばかげたことです)。

于 2013-02-05T12:03:03.177 に答える
2

SuperColliderは、externals / pluginsまたはQuarksの両方として、これらのラインに沿ったものを多くサポートしています。そうは言っても、それはあなたが何をしたいかに正確に依存します。単にイベントを検出することを探しているのであれば、それで問題ありOnsets.krません。あなたが周波数/ピッチ情報を探しているか、PitchまたはTartiniうまくいくなら(私はTartiniより正確であることがわかります)。振幅を追跡しようとしている場合はAmplitude.ar、いくつかの簡単な計算の組み合わせも機能します。

同様に、SpecCentroid.kr(一種の明るさ分析のために)、、Loudness.krなどSpecFlatness.krがあります。

上記はすべてかなり一般的であり、さらに多くのものがあります(JoshUGens外部パッケージにはいくつかの興味深いFFT関連の音響要素が含まれています)。したがって、プログラムをダウンロードし、ここにあるメーリングリスト(さらに質問がある場合)に参加して、Externals、Quarks、およびStandardUGenを調べてみることをお勧めします。

それでも、あなたが何をしようとしているのかわからないので、Pythonですべての独自のツールを作成するよりも、SCに行くのが最も理にかなっているという私の気持ちと組み合わせて、上記よりも具体的な推奨事項を作成することはできません。ゼロから。

于 2013-01-24T23:51:18.783 に答える
0

あなたが何をしたいのか 100% 確信があるわけではありませんが、追加の提案として、Common Lisp でスクリプトを使用して槍を打つことを提案します。大量のスペクトル分析が必要な場合は、Spear で重い作業を行い、Common List と Common Music を使用してこれらすべてをスクリプト化できます。Spear には、非常に特定のパーシャルを編集するという点で優れたツールがいくつかあります。

于 2013-04-27T15:24:21.920 に答える