生(ヘッドレス)オーディオファイルのエンコーディングとは何ですか?

生(ヘッドレス)オーディオファイルのエンコーディングとは何ですか?

私はこれをしました:

me@riverbrain:~/sgf$ echo "test" | text2wave -otype raw -F 16000 >> test.raw

ヘッドレスオーディオファイルを生成します。このファイルの驚くべきことは、他の生のcatオーディオファイル(テキストを使用するなど)と関連付けることができることです。

もちろん質問があります。問題はまだプレイできないことです。

me@riverbrain:~/sgf$ play test.raw 

play FAIL formats: bad input format for file `test.raw': sampling rate was not specified

また、サンプリングレートを指定する場合

me@riverbrain:~/sgf$ play -r 16000 test.raw 
play FAIL formats: bad input format for file `test.raw': data encoding was not specified

いくつかの「エンコード」情報を検索したとき、プロセッサアーキテクチャと多くの関連があると感じましたが、おそらく私が間違っている可能性があります。とにかく、生のオーディオファイルのデータエンコーディングが何であるかをコンピュータに「質問」する方法に関するドキュメントが見つかりません。サンプリングレートも私が直接設定して知っていますが、私が知ることができるのがこれです。

答え1

さまざまですが、少なくとも私にはtext2waveが1チャンネル、16ビット、符号付き整数PCMを生成します。これらはすべてかなり正常であり、正しく使用すると非常に明確になります(例えば、符号なし整数を誤って使用すると音が非常に歪む)

これで遊ぶには:

play -r 16000 -b 16 -c 1 -e signed-integer /tmp/foo.raw
play -r 16000 -2 -s -c 1 /tmp/foo.raw # obsolete way for older versions of Sox

私はこれらのパラメータがFestivalのどこかに設定されていると思います。これらのいくつかはハードコーディングされるかもしれません。

アーキテクチャに関する唯一の問題はビッグエンディアンとリトルエンディアンです。私のリトルエンディアンシステムでは、フェスティバルはリトルエンディアンを作成しています。ファイルをビッグエンディアンシステムに移動する-L。ビッグエンディアンシステムで実行している場合、text2wavビッグエンディアンデータを書き込むか、リトルエンディアンデータを書き込むかはわかりません。

答え2

-tスイッチを介して生のオーディオを指定できるように、生のファイルを再生するaplay代わりに使用します。play

aplay -q -c 2 -t raw -f s16 test.raw

答え3

独自のRIFFヘッダを作成することもできます。ちょっと叩いて...それから別のセクションの上にタイトルを入れてください...

このリンクはヘッダーレイアウトを示しています。標準WAVEファイル形式

SOには関連リンクもあります。スクリプトを使用してRAWオーディオデータをWAVに変換ただし、mplayer / mencoderの回答のトークン数は0です。しかし、それは見えるソックス働く

ソックス上記の両方のリンクに記載されており、Ubuntuリポジトリにあります。他の人も同じだと仮定します。

追伸…ちょっと使ってみましたがplay(存在するかわからなかった)SoXということが分かりました! ... SOリンクはここにコピーされた例を提供します。sox -r 44100 -e unsigned -b 8 -c 1 <RAW_FILE> <TARGET_FILE>

操作できない場合ソックス、おそらくmplayer / mencoderまたはRIFFヘッダーが役に立ちます。

関連情報