サーバー側のオーディオミキサー。利用可能なものは何ですか? (Csoundはこれを行うことができますか?)
質問
次のタスクを実行でき、Webサイトでサーバー側プロセスの一部として実行するのに適したプログラムまたはライブラリが存在するかどうかを調べることに興味があります。 (1ページのリクエストに対して妥当な最大200ミリ秒より長くかかる場合でも構いません-非同期プロセスとして実行できます。)
タスクは次のとおりです。入力としてオーディオファイルのセットがあり、タイムラインで各オーディオファイルの再生を開始するタイミングに関するデータがあります。プログラムは、タイムラインデータを使用して結合された、入力オーディオのミックスであるオーディオファイルを出力する必要があります。つまり、リアルタイムではなく、バッチモードで動作するオーディオミキサーが必要です。
いくつかのGoogle検索を実行しましたが、探しているものが正確にわからないため、少しイライラしました。ほとんどのオーディオミキサーは、ゲームなどのリアルタイムアプリケーションを対象としています。このタスクをコマンドラインユーティリティのようなものとして見つける方法はわかりません。純粋に入力を取得し、できるだけ速く出力を生成します。
この質問が理にかなっていることを願っています。
編集:誰かが Csound についてコメントしてから削除しました。 Csoundとは何ですか?私が求めていることを行うのは比較的簡単ですか?入力サウンドファイルの長さは10〜50秒である可能性があり、ピッチの歪みには興味がないことに注意してください。
Csoundでこれをどのように達成しますか?
この種のことができるCsound以外のものはありますか?
解決
これには間違いなくCsoundを使用でき、さまざまな方法で実装できます。残念ながら、まだかなり初期のCsoundの研究は、サンプリングと処理よりもオーディオ合成とアルゴリズム合成に深く関わっているため、堅牢な実装の提案はできません。
ただし、プロジェクトのオーケストラファイル( instruments と呼ばれるモジュールに含まれるオーディオ合成および処理情報を含むCsoundプログラムの一部)には、 soundin
オペコード。オーディオファイルから読み取り、さまざまなストリームの振幅をスケーリングし、出力に渡す前にミックスします。
タイムラインはおそらく scoreファイル(楽器と関数テーブルの初期化を処理するCsoundプログラムの一部)で処理され、タイムラインデータを再生タイミングに変換します。
また、Csoundの GEN01
サブルーチンを調べることもできます。このサブルーチンは、ファイルからオーディオデータを関数テーブルに読み込みます。
他のヒント
このプロセスの一部としてバッチスクリプトの実行を検討する場合は、 SoX が役立つ場合があります。 。その「ミキサー」および「リミックス」コマンドは役立つように見えますが、オフセットを処理するためにサウンドファイルの先頭に空のスペースをレンダリングする必要があるかもしれません。
SuperCollider をご覧ください。多分それはあなたのためのトリックを行うでしょう。
PHPの OpenALバインディングのようなもの?
BASS Audio Library をご覧ください。ファイアウォールでブロックされているため、リアルタイムよりも高速に混合できるかどうかはわかりませんが、過去に使いやすいことがわかりました。
質問の表現方法により、おそらくリアルタイムオーディオソリューションに向けて多くの提案が寄せられています。
プログラムは音声を出力する必要があります 入力の混合であるファイル タイムラインを使用して結合されたオーディオ データ。
"音声入力"とてもあいまいです。私にとっては、ライブ入力ストリーム(マイクのような)のように聞こえます。 ライブI / Oストリームをまったく扱っていない場合は、そうです、Csoundは有望な候補です。オンラインのCsoundチュートリアルがたくさんあります。