21.3. aifc — AIFFおよびAIFCファイルの読み取りと書き込み—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/aifc
移動先:案内検索

21.3。 aifc —AIFFおよびAIFCファイルの読み取りと書き込み

ソースコード: :source: `Lib / aifc.py`



このモジュールは、AIFFおよびAIFF-Cファイルの読み取りと書き込みのサポートを提供します。 AIFFは、デジタルオーディオサンプルをファイルに保存するためのフォーマットであるAudio Interchange FileFormatです。 AIFF-Cは、オーディオデータを圧縮する機能を含む新しいバージョンの形式です。

ノート

一部の操作は、IRIXでのみ機能する場合があります。 clモジュールをインポートしようとすると、ImportErrorが発生します。これは、IRIXでのみ使用できます。


オーディオファイルには、オーディオデータを説明するいくつかのパラメータがあります。 サンプリングレートまたはフレームレートは、サウンドがサンプリングされる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])
AIFFまたはAIFF-Cファイルを開き、以下で説明するメソッドを使用してオブジェクトインスタンスを返します。 引数 file は、ファイルまたはファイルオブジェクトに名前を付ける文字列です。 mode は、ファイルを読み取り用に開く必要がある場合は'r'または'rb'である必要があり、ファイルを開く必要がある場合は'w'または'wb'である必要があります。書き込み用に開かれました。 省略した場合はfile.modeが使用され、存在しない場合は'rb'が使用されます。 書き込みに使用する場合、合計でいくつのサンプルを書き込み、writeframesraw()およびsetnframes()を使用するかを事前に知らない限り、ファイルオブジェクトはシーク可能である必要があります。

ファイルを読み取り用に開いたときに open()によって返されるオブジェクトには、次のメソッドがあります。

aifc.getnchannels()
オーディオチャンネルの数を返します(モノラルの場合は1、ステレオの場合は2)。
aifc.getsampwidth()
個々のサンプルのサイズをバイト単位で返します。
aifc.getframerate()
サンプリングレート(1秒あたりのオーディオフレーム数)を返します。
aifc.getnframes()
ファイル内のオーディオフレームの数を返します。
aifc.getcomptype()
オーディオファイルで使用される圧縮のタイプを説明する4文字の文字列を返します。 AIFFファイルの場合、戻り値は'NONE'です。
aifc.getcompname()
オーディオファイルで使用されている圧縮の種類について、人間が読める形式の説明を返します。 AIFFファイルの場合、戻り値は'not compressed'です。
aifc.getparams()
上記のすべての値で構成されるタプルを上記の順序で返します。
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文字の文字列である必要があります。 現在、次の圧縮タイプがサポートされています:NONE、ULAW、ALAW、G722。
aifc.setparams(nchannels, sampwidth, framerate, comptype, compname)
上記のすべてのパラメータを一度に設定します。 引数は、さまざまなパラメーターで構成されるタプルです。 これは、 getparams()呼び出しの結果を setparams()への引数として使用できることを意味します。
aifc.setmark(id, pos, name)
指定されたID(0より大きい)と指定された位置に指定された名前のマークを追加します。 このメソッドは、 close()の前であればいつでも呼び出すことができます。
aifc.tell()
出力ファイルの現在の書き込み位置を返します。 setmark()と組み合わせて使用すると便利です。
aifc.writeframes(data)
出力ファイルにデータを書き込みます。 このメソッドは、オーディオファイルのパラメータが設定された後にのみ呼び出すことができます。
aifc.writeframesraw(data)
writeframes()と同様ですが、オーディオファイルのヘッダーが更新されない点が異なります。
aifc.close()
AIFFファイルを閉じます。 ファイルのヘッダーは、オーディオデータの実際のサイズを反映するように更新されます。 このメソッドを呼び出すと、オブジェクトは使用できなくなります。