4

プレーン TXT ファイルに変換したい 8 ビット WAV ファイルがあります。結果の TXT ファイルには、すべてのサンプルの値を表す 0 から 255 までの数値のみが含まれていることが重要です。

もちろん、必要に応じてすべてを変換/正規化することは大したことではないため、-128 から 128 のようなものでも問題ありません。

Audacity を使用してさまざまなヘッダーのない RAW 形式にエクスポートしようとしましたが、利用可能なエンコーディングは探しているものではありません。

この質問は少し奇妙かもしれませんが (ある種のアート プロジェクトでそのファイルが必要です)、助けていただければ幸いです。

4

1 に答える 1

3

最初のサンプル ファイル:

sox -n -r 8k -b 8 test.wav synth 0.02 sine 400 fade t 0 0 0.02 norm

これにより、最初から最後まで直線的にフェードする 0.02 秒の長さの 400Hz サイン トーンが作成されます。これは、8 ビット精度、8kHz のサンプル レート、単一チャンネルの WAV ファイルとして保存されます。

これを [0, 255] の範囲のサンプル値の文字列に変換することに関しては、次のような sox で生成できる未加工のヘッダーなし形式で正しい軌道に乗っています。

sox -V test.wav -e unsigned test.raw

しかし、結果の.rawファイルをテキスト エディターで開くと、ナンセンスなファイルのように見えます。これを修正するには、hexdumpユーティリティを介して if を送信して、データをより読みやすい形式に変換します。

hexdump -v -e '1/1 "%03u "' test.raw > test.txt

私が知る限り (私はhexdump昨日のことだけを知ったので、私の言葉を福音と見なさないでください):-vすべての出力が明示的に記述されていることを保証し (そうでない場合、繰り返しはアスタリスクで表されます)、-e独自のフォーマット文字列を作成できます(内容は次のとおりです)。単一引用符):1/1データを 1 の「束」で並べ、束ごとに 1 バイトで、"%03u "各「束」がゼロで埋められた 3 桁の符号なし 10 進数として表されるようにします。各「束」を区切るために、単一の空白も追加されます。

または、次のように、最初のコマンドを 2 番目のコマンドに直接パイプすることもできます。

sox -V test.wav -t raw -e unsigned - | hexdump -v -e '1/1 "%03u "' > test.txt

test.txt の内容は次のようになります。

head -c 64 test.txt
# 132 169 205 233 251 255 250 230 203 167 128 090 057 030 014 009

ここに画像の説明を入力

ゼロ パディングを削除するには、コマンドから '03' を削除しますhexdump

これはhexdumpBSD プログラムであり、*NIX システムではどこにでもありますが、Windows で同等のものが何であるかはわかりません。

于 2016-06-30T23:21:59.840 に答える