aifc —AIFFおよびAIFCファイルの読み取りと書き込み
ソースコード: :source: `Lib / aifc.py`
このモジュールは、AIFFおよびAIFF-Cファイルの読み取りと書き込みのサポートを提供します。 AIFFは、デジタルオーディオサンプルをファイルに保存するためのフォーマットであるAudio Interchange FileFormatです。 AIFF-Cは、オーディオデータを圧縮する機能を含む新しいバージョンの形式です。
オーディオファイルには、オーディオデータを説明するいくつかのパラメータがあります。 サンプリングレートまたはフレームレートは、サウンドがサンプリングされる1秒あたりの回数です。 チャネル数は、オーディオがモノラル、ステレオ、またはQuadroのいずれであるかを示します。 各フレームは、チャネルごとに1つのサンプルで構成されます。 サンプルサイズは、各サンプルのバイト単位のサイズです。 したがって、フレームはnchannels * samplesize
バイトで構成され、1秒に相当するオーディオはnchannels * samplesize * framerate
バイトで構成されます。
たとえば、CD品質のオーディオのサンプルサイズは2バイト(16ビット)で、2つのチャネル(ステレオ)を使用し、フレームレートは44,100フレーム/秒です。 これにより、フレームサイズは4バイト(2 * 2)になり、1秒に相当するものが2 * 2 * 44100バイト(176,400バイト)を占めます。
モジュール aifc は、次の関数を定義します。
- aifc.open(file, mode=None)
AIFFまたはAIFF-Cファイルを開き、以下で説明するメソッドを使用してオブジェクトインスタンスを返します。 引数 file は、ファイルに名前を付ける文字列またはファイルオブジェクトのいずれかです。 モードは、ファイルを読み取り用に開く必要がある場合は
'r'
または'rb'
である必要があり、ファイルを開く必要がある場合は'w'
または'wb'
である必要があります。書き込み用に開かれました。 省略した場合はfile.mode
が使用され、存在しない場合は'rb'
が使用されます。 書き込みに使用する場合、合計でいくつのサンプルを書き込み、writeframesraw()
およびsetnframes()
を使用するかを事前に知らない限り、ファイルオブジェクトはシーク可能である必要があります。 open()関数は、 with ステートメントで使用できます。with
ブロックが完了すると、 close()メソッドが呼び出されます。バージョン3.4で変更: with ステートメントのサポートが追加されました。
ファイルを読み取り用に開いたときに open()によって返されるオブジェクトには、次のメソッドがあります。
- aifc.getnchannels()
- オーディオチャンネルの数を返します(モノラルの場合は1、ステレオの場合は2)。
- aifc.getsampwidth()
- 個々のサンプルのサイズをバイト単位で返します。
- aifc.getframerate()
- サンプリングレート(1秒あたりのオーディオフレーム数)を返します。
- aifc.getnframes()
- ファイル内のオーディオフレームの数を返します。
- aifc.getcomptype()
- オーディオファイルで使用される圧縮のタイプを説明する長さ4のバイト配列を返します。 AIFFファイルの場合、戻り値は
b'NONE'
です。
- aifc.getcompname()
- オーディオファイルで使用される圧縮のタイプの人間が読める形式の説明に変換可能なバイト配列を返します。 AIFFファイルの場合、戻り値は
b'not compressed'
です。
- aifc.getparams()
- namedtuple()
(nchannels, sampwidth, framerate, nframes, comptype, compname)
を返します。これは、get*()
メソッドの出力に相当します。
- aifc.getmarkers()
- オーディオファイル内のマーカーのリストを返します。 マーカーは、3つの要素のタプルで構成されます。 1つ目はマークID(整数)、2つ目はデータの先頭からのフレーム内のマーク位置(整数)、3つ目はマークの名前(文字列)です。
- aifc.getmark(id)
- 指定された id のマークについて、 getmarkers()の説明に従ってタプルを返します。
- aifc.readframes(nframes)
- オーディオファイルから次の nframes フレームを読み取って返します。 返されるデータは、フレームごとにすべてのチャネルの非圧縮サンプルを含む文字列です。
- aifc.rewind()
- 読み取りポインタを巻き戻します。 次の readframes()は最初から始まります。
- aifc.setpos(pos)
- 指定されたフレーム番号を探します。
- aifc.tell()
- 現在のフレーム番号を返します。
- aifc.close()
- AIFFファイルを閉じます。 このメソッドを呼び出すと、オブジェクトは使用できなくなります。
ファイルを書き込み用に開いたときに open()によって返されるオブジェクトには、readframes()
とsetpos()
を除いて、上記のすべてのメソッドがあります。 さらに、次の方法があります。 get*()
メソッドは、対応するset*()
メソッドが呼び出された後にのみ呼び出すことができます。 最初のwriteframes()
またはwriteframesraw()
の前に、フレーム数を除くすべてのパラメーターを入力する必要があります。
- aifc.aiff()
- AIFFファイルを作成します。 デフォルトでは、ファイル名が
'.aiff'
で終わる場合を除き、AIFF-Cファイルが作成されます。この場合、デフォルトはAIFFファイルです。
- aifc.aifc()
- AIFF-Cファイルを作成します。 デフォルトでは、ファイル名が
'.aiff'
で終わる場合を除き、AIFF-Cファイルが作成されます。この場合、デフォルトはAIFFファイルです。
- aifc.setnchannels(nchannels)
- オーディオファイルのチャンネル数を指定します。
- aifc.setsampwidth(width)
- オーディオサンプルのサイズをバイト単位で指定します。
- aifc.setframerate(rate)
- サンプリング周波数を1秒あたりのフレーム数で指定します。
- aifc.setnframes(nframes)
- オーディオファイルに書き込むフレーム数を指定します。 このパラメータが設定されていないか、正しく設定されていない場合、ファイルはシークをサポートする必要があります。
- aifc.setcomptype(type, name)
- 圧縮タイプを指定します。 指定しない場合、オーディオデータは圧縮されません。 AIFFファイルでは、圧縮はできません。 nameパラメーターは、バイト配列としての圧縮タイプの人間が読める形式の説明である必要があり、typeパラメーターは長さ4のバイト配列である必要があります。 現在、次の圧縮タイプがサポートされています:
b'NONE'
、b'ULAW'
、b'ALAW'
、b'G722'
。
- aifc.setparams(nchannels, sampwidth, framerate, comptype, compname)
- 上記のすべてのパラメータを一度に設定します。 引数は、さまざまなパラメーターで構成されるタプルです。 これは、 getparams()呼び出しの結果を setparams()への引数として使用できることを意味します。
- aifc.setmark(id, pos, name)
- 指定されたID(0より大きい)と指定された位置に指定された名前のマークを追加します。 このメソッドは、 close()の前であればいつでも呼び出すことができます。
- aifc.tell()
- 出力ファイルの現在の書き込み位置を返します。 setmark()と組み合わせて使用すると便利です。
- aifc.writeframes(data)
出力ファイルにデータを書き込みます。 このメソッドは、オーディオファイルのパラメータが設定された後にのみ呼び出すことができます。
バージョン3.4で変更:任意のバイトのようなオブジェクトが受け入れられるようになりました。
- aifc.writeframesraw(data)
writeframes()と同様ですが、オーディオファイルのヘッダーが更新されない点が異なります。
バージョン3.4で変更:任意のバイトのようなオブジェクトが受け入れられるようになりました。
- aifc.close()
- AIFFファイルを閉じます。 ファイルのヘッダーは、オーディオデータの実際のサイズを反映するように更新されます。 このメソッドを呼び出すと、オブジェクトは使用できなくなります。