質問

こんにちは私は44.1kHzのWAVから8kHzのにオーディオファイルのサンプルレートをダウンサンプリングする必要があります。私はバイト配列を使用して手動ですべての作業をしなければならない...それは学術目的のためです。

私は現在、ポップやバイトのプッシュ配列し、2クラス、シンクとソースを使用しています。私は線形補間を使用してデータチャンクをダウンサンプリングする必要がある部分に到達するまで、すべてがうまくいっています。

私は44100から8000 Hzにダウンサンプリングしていますので、どのように私は128 000 000バイトのようなものを含むバイト配列を補間するのですか?今、私は新しいファイルにこれらの5、6または7バイトの平均をI%2 == 0、I%2 == 1、I%80 == 0に応じて5、6または7つのバイトをポップとプッシュしています。

結果は確かにオリジナルよりも小さいのオーディオファイルですが、それはWindowsメディアプレーヤーで再生することはできません(ファイルの読み取り中にエラーがあると言う)と、私は後ろに右のトラックを聞くことができますが、ノイズがたくさんありますノイズます。

だから、物事をまとめるために、私は、線形補間部に関するヘルプを必要としています。事前に感謝します。

役に立ちましたか?

解決

私はそれが正確にダウンサンプリングない、メディアンフィルタであるように、あなたがこれらのサンプルの平均値を使用してはならないと思います。ただ、その新しいファイルにすべての第五/第6/7サンプルと書き込みを使用します。

これはおそらく、いくつかのエイリアシングアーティファクトを持っていますが、全体的な認識であるかもしれない。

別の、より複雑なソリューションが、より良い結果と、おそらく1、品質面では、FFTやDFTを用いて周波数分布に最初に変換あなたのサンプルになり、その後、適切なサンプル・レートで戻ってそれを変換します。私はそのようなことを行っているが、それは間違いなくなんとかですので、それはしばらくしています。あなたはしかし、それは正しく動作して取得するビットを周りいじる必要があるかもしれません。

また、完全な配列のFTを取るのではなく、セグメントにあなたは私が、私はこれを実行可能な解決策を考え出すていなかったそれらのもので再生する場合、セグメント境界が数年前には0であることの問題を持っていません(それは同様の成果物を生成するので)しかし、あなたは右の本を読めば、おそらく1があります: - )

WMPについては、ファイルの不満:あなたのでしたのあなたはそれに応じて書きヘッダーを変更し、右

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top