0

ここ数日、膨大な量のデータ (約 900 MB) を可聴ファイル形式に変換しようとしてきました。10 MHz で 90 秒間の音楽を表す 9 億の浮動小数点サンプル (1 行に 1 つ) を含む .dat ファイルを受け取りました。

40 KHz にダウンサンプリングしましたが、これらのバイトに隠されたオーディオをどのように聞くことができるかわかりません。私は Linux 環境で C++ プログラムを書いていますが、Matlab、Octave、Python、Audacity、MPlayer、またはその他のツールを使用してこのタスクを達成する方法を知っている人がいる場合は、来て話してください:) 貢献はいくらでも大歓迎です.

    head -n 5 ~/input.dat
    -2.4167
    -7.5322e-016
    -0.2283
     0.13581
    -0.51926
4

4 に答える 4

1

wav ファイル形式はかなり単純なものです。

そのリンクで定義されている 44 バイトのヘッダー ブロックを記述し、その後に整数に変換されたデータを記述するだけです。

于 2013-04-02T17:56:58.867 に答える
1

WAV では、浮動小数点のサンプル データと幅広いサンプル レート (メモリが機能する場合、1Hz 刻みで 1Hz から 4.2GHz) が可能です。

わざわざ整数値に変換する必要はありません。WAV ファイルのヘッダーを適切に設定し、データ セクションに 32 ビット float をバイナリ データとして書き込むだけです。

ストレージの観点からは、10MHz のサンプルレートは WAV ファイルには問題ありません。ただし、再生には、ハードウェアが処理できるものに変換する必要があります。最近の上限は通常 96 または 192 kHz です。

于 2014-12-21T00:26:03.680 に答える
1

一連のバイトがあり、それをオーディオに変換したい場合、ヘッダーを書き込むだけで済みます。あなたが使用できると述べたので、コマンドMatLABをお勧めしwavwriteます。シンプルで、試行錯誤されており、プロトタイピングに優れています。ドキュメントへのリンクは次のとおりです
。 http://www.mathworks.in/help/matlab/ref/wavwrite.html

を使用している場合に実行する必要がある手順を次に示しますwavwrite
- 入力データは浮動小数点であるため、ファイル内のデータを [-1, 1] の範囲内にスケーリングします。
- データがスケーリングされたら、関数呼び出しにプラグ アンド チャグします。
- コマンドを使用して wav ファイルを再生しますwavplay

于 2013-04-02T18:30:53.317 に答える
1

サンプルレートを 44100 hz (または 48000、22050、11025、または 8000 hz) に設定します。

オーディオ サンプルを 16 ビットの符号付き整数 (-32768 ~ +32767) に変換します。

こちらの WAV ファイル合成の手順に従ってください: 最初からの WAV ファイル合成 - C

于 2013-04-02T17:58:39.453 に答える