2017-01-24 18 views
0

私のサーバーに.MP3ファイルが保存されていますので、少しピッチを下げて変更したいと思います。私はこれがオーディオの長さを増やすことによって達成できることを知っていますが、私はこれを行うことができるノードのライブラリを知らない。nodejsサーバー側のオーディオファイルの音程を下げる方法は?

私はノードウェブオーディオAPIを使用してみました、そしてサウンドバンク・ピッチ・シフトが、前者はピッチシフトの機能を持っていないようです(私の知る限り)、そして後者は、クライアントに向かって設計されているようだき

私はノードの領域内のみで解決策が必要です。つまり、外部プログラムなどを意味しません。また、自動化する必要があるため、手動でシフトすることはできません。

理想的な解決策は、入力としてファイル/ファイルパスをとり、別のMP3ファイルを作成(または上書き)するが、ピッチをx量だけシフトして、実際にはオリジナルよりも低いピッチで動作します。

私はここで完全に失われています。助けてください。

+0

[こちら](https://github.com/mikolalysenko/pitch-shift)はどうですか? – moonwave99

+0

@ moonwave99 WebAudioを使っていると考えれば、もう一つのWebベースのツールだと思う:( – michal

+0

ヘッドレスブラウザで実行してください^^ – moonwave99

答えて

1

私はそれをOllie M's answernode-lameの助けを借りて手に入れることができました。

以前はサンプリングレートがスピードに影響を与えることは分かっていませんでしたが、Ollieのおかげで突然この問題はより簡単になりました。

node-lameを使って、私がしたのは、例の1つ(mp32wav)でした。js)を使用して、formatオブジェクトのパラメータsampleRateを変更するようにしてください。これは、アプリケーションでは常に静的な24,000の基本サンプルレートよりも低くなります。 node-lameはformatオブジェクトの入力ファイルのパラメータを取得できるため、動的にすることもできます。

Ollie第が、しかし完全にいずれの場合にも、この手法には、この方法

の欠点欠点を説明音 も遅い速度で、ならびにより低いピッチで再生することです。 が処理の結果、音が遅くなったり、 ピッチに低下したりする問題がある場合は、 タイムストレッチアルゴリズムを使用して再生速度を固定する必要があります。

(つまり、ワームの全体の他の缶だから、ありがたいことに)私は、ファイルの最初の速度を変更する機能を持っているので、私は、現時点ではアルゴリズムをタイムストレッチを実装するための特定の必要性を持っていません、将来は他のものがあるかもしれません。

1

オーディオファイルは、基本的に数字のリストです。これらの数値は、「サンプルレート」と呼ばれる特定の速度で一度に1つずつ読み込まれます。そうでなければ、サンプルレートは毎秒読み取られるオーディオサンプルの数として定義される。オーディオファイルのサンプルレートが44100の場合、毎秒44100のサンプル(または数字)が読み込まれます。

これまで私と一緒だった場合、オーディオファイルのピッチを下げる最も簡単な方法は、通常は固定された低いサンプルレートでファイルを再生することです。ほとんどの場合、これを行うことはできませんので、ファイルをリサンプリングする、つまり古いサンプルの間にファイルに新しいサンプルを追加して文字通り長くすることで同じ効果を達成する必要があります。このためには補間を理解する必要があります。

どちらの場合でも、この手法の欠点は、サウンドが低速でも低速でも再生されるということです。処理の結果、音が遅くなったり、ピッチが下がったりする問題がある場合は、タイムストレッチアルゴリズムを使用して再生速度を固定する必要があります。

また、MP3ファイルを使用すると問題が発生することがあります。この場合、ファイルのピッチを変更するように操作する前に、MP3ファイルのデータを解凍する必要があります。 WAVファイルは、オーディオ処理でより理想的です。いずれにしても、ファイルを浮動小数点数のリストに変換し、効果的に読み戻す速度を遅くする必要があります。

ピッチシフトの他の方法はおそらくfftsの使用を必要とするでしょうし、最も複雑なものになるでしょう。

私はnodejsに精通していません。私は恐れています。

関連する問題