8k16ビットのpcmオーディオがあり、16k16ビットにアップサンプリングしたいと思います。これは手動で行う必要があります。
線形補間のアルゴリズムを教えてもらえますか?各2バイト間を補間する必要がありますか?
また、アップサンプリングするときは、wavヘッダーを変更する必要があります-何を変更する必要がありますか?
8k16ビットのpcmオーディオがあり、16k16ビットにアップサンプリングしたいと思います。これは手動で行う必要があります。
線形補間のアルゴリズムを教えてもらえますか?各2バイト間を補間する必要がありますか?
また、アップサンプリングするときは、wavヘッダーを変更する必要があります-何を変更する必要がありますか?
他の人が述べているように、線形補間は最高の音質を提供しませんが、それはシンプルで安価です。
作成する新しいサンプルごとに、次のサンプルと平均化するだけです。
short[] source = ...;
short[] result = new short[source.length * 2];
for(int i = 0; i < source.length; ++i) {
result[i * 2] = source[i];
result[i * 2 + 1] = (source[i] + source[i + 1]) / 2;
}
WAVファイルの操作に役立つライブラリを必ず検索する必要があります。単純な形式ですが、必要なことを実行するコードが利用できる場合は、自分でそれを行う必要はありません。ちなみに、そもそもなぜこれをしているのですか?おそらく、soxまたは同様のツールを使用してこれを行うことができます。
線形補間のアルゴリズムを教えてもらえますか?各2バイト間を補間する必要がありますか?
承知しました:
double interpolate_linear(double a, double b, double x) {
assert(0.0 <= x);
assert(1.0 >= x);
if (0.0 >= x)
return a;
else if (1.0 <= x)
return b;
else
return (1.0 - x) * a + x * b;
}
線形補間は、何もないよりはましですが、大量のエラーがあります。CPU時間があれば、塗りつぶしとウィンドウをゼロにすることをお勧めします。
また、アップサンプリングするときは、wavヘッダーを変更する必要があります-何を変更する必要がありますか?
Javaについてはよくわかりません。
JavaでWAVファイルを操作するための適切なリンクは次のとおりです。
ヘッダーについてはわかりませんが、3次スプライン補間を調べます。あなたはこのウェブサイトを見ることができます。これは、3次補間を実行するための非常に優れた方法です。ヘッダーを変更する方法はわかりませんが、StackOverflowで検索できる答えがあると確信しています。