こんにちは、この投稿では、8MIC-RPI-MX8ボードを使用して分離されたオーディオチャネルを録音する方法を説明します。
i.MX ボードを使用してオーディオを録音および再生するようにボードを設定する方法の背景として、次の投稿をご覧になることをお勧めします。
8MIC-RPI-MX8ボードを使用してオーディオを構成、録音、再生する方法。
要件:
波形オーディオフォーマット
WAVは、WAVE(Waveform Audio File Format)で知られており、デジタルオーディオファイルを保存するためのMicrosoftのResource Interchange File Format(RIFF)仕様のサブセットです。この形式では、情報に圧縮が適用されず、オーディオは異なるサンプリング レートとビットレートで保存されます。
WAVファイルは、良好なオーディオ品質を維持しながらファイルサイズを縮小するために圧縮を使用するMP3などの他の形式に比べてサイズが大きくなっていますが、オーディオ情報はランダムすぎて従来の方法で圧縮できないため、品質には常にいくらかの損失があり、この形式の主な利点は、スタジオでも広く使用されている損失のないオーディオファイルを提供することです。
このファイルは、データ チャンクを含むファイル ヘッダーで始まります。WAV ファイルは、次の 2 つのサブチャンクで構成されます。
したがって、WAVファイルヘッダーと呼ばれるメタデータと実際のオーディオ情報によって構造化されます。
WAV (RIFF) ファイルのヘッダーの長さは 44 バイトで、次の形式です。
チャネルを分離する方法は?
各オーディオチャンネルを録音から分離するには、各チャンネルの生データを記録する次のコマンドを使用する必要があります。
arecord -D plughw:arecord -D plughw:2,0 -c8 -f s16_le -r 48000 -d 10 --separate-channels sample.wav
このコマンドは、以下に示すように、記録されたチャネルの生データを出力します。
この生データは「正常」.wavとして使用することはできませんヘッダー情報がないため、ファイル。生データをDAWにインポートして録音したサンプルを再生すると確認できます。
したがって、この情報を使用するには、Python上の WAVEライブラリ を使用して各ファイルのヘッダーを作成する必要があります。ここに私が使用したスクリプトがあります:
import wave
import os
name = input("Enter the name of the audio file: ")
os.system("arecord -D plughw:2,0 -c8 -f s16_le -r 48000 -d 10 --separate-channels " + name + ".wav")
for i in range (0,8):
with open(name + ".wav." + str(i), "rb") as in_file:
data = in_file.read()
with wave.open(name + "_channel_" + str(i) +".wav", "wb") as out_file:
out_file.setnchannels(1)
out_file.setsampwidth(2)
out_file.setframerate(48000)
out_file.writeframesraw(data)
os.system("mkdir output_files")
os.system("mv " + name + "_channel_" + "* " + "output_files")
os.system("rm " + name + ".wav.*")
スクリプトを実行すると、 は .wav の 8 つのオーディオ チャネルを含むディレクトリを生成します形式。
これで、オーディオプレーヤーを使用して各チャンネルを個別に再生できるようになります。
参考情報