21.5。 波 —WAVファイルの読み取りと書き込み
ソースコード: :source: `Lib / wave.py`
wave モジュールは、WAVサウンドフォーマットへの便利なインターフェイスを提供します。 圧縮/解凍はサポートしていませんが、モノラル/ステレオはサポートしています。
wave モジュールは、次の関数と例外を定義します。
- wave.open(file[, mode])
file が文字列の場合は、その名前でファイルを開きます。それ以外の場合は、シーク可能なファイルのようなオブジェクトとして扱います。 モードは次のいずれかになります
'r'
、'rb'
読み取り専用モード。
'w'
、'wb'
書き込み専用モード。
WAVファイルの読み取り/書き込みは許可されないことに注意してください。
'r'
または'rb'
のモードはWave_read
オブジェクトを返し、'w'
または[ X108X] は、Wave_write
オブジェクトを返します。 モードが省略され、ファイルのようなオブジェクトがファイルとして渡される場合、file.mode
がモードのデフォルト値として使用されます([ X145X] フラグは、必要に応じて追加されます)。ファイルのようなオブジェクトを渡すと、waveオブジェクトは
close()
メソッドが呼び出されたときにオブジェクトを閉じません。 ファイルオブジェクトを閉じるのは呼び出し元の責任です。
- wave.openfp(file, mode)
- open()の同義語であり、下位互換性のために維持されています。
- exception wave.Error
- WAV仕様に違反している、または実装の欠陥にぶつかったために何かが不可能な場合に発生するエラー。
21.5.1。 Wave_readオブジェクト
open()によって返されるWave_readオブジェクトには、次のメソッドがあります。
- Wave_read.close()
- wave によって開かれた場合はストリームを閉じ、インスタンスを使用不可にします。 これは、オブジェクトコレクションで自動的に呼び出されます。
- Wave_read.getnchannels()
- オーディオチャンネルの数を返します(モノラルの場合は
1
、ステレオの場合は2
)。
- Wave_read.getsampwidth()
- サンプル幅をバイト単位で返します。
- Wave_read.getframerate()
- サンプリング周波数を返します。
- Wave_read.getnframes()
- オーディオフレームの数を返します。
- Wave_read.getcomptype()
- 圧縮タイプを返します(
'NONE'
がサポートされている唯一のタイプです)。
- Wave_read.getcompname()
- getcomptype()の人間が読めるバージョン。 通常、
'not compressed'
は'NONE'
と同等です。
- Wave_read.getparams()
get*()
メソッドの出力と同等のタプル(nchannels, sampwidth, framerate, nframes, comptype, compname)
を返します。
- Wave_read.readframes(n)
- 最大で n フレームのオーディオをバイト文字列として読み取って返します。
- Wave_read.rewind()
- ファイルポインタをオーディオストリームの先頭に巻き戻します。
次の2つのメソッドは、 aifc モジュールとの互換性のために定義されており、興味深いことは何もしません。
- Wave_read.getmarkers()
None
を返します。
- Wave_read.getmark(id)
- エラーを発生させます。
次の2つのメソッドは、それらの間で互換性があり、それ以外の場合は実装に依存する「位置」という用語を定義します。
- Wave_read.setpos(pos)
- ファイルポインタを指定した位置に設定します。
- Wave_read.tell()
- 現在のファイルポインタの位置を返します。
21.5.2。 Wave_writeオブジェクト
open()によって返されるWave_writeオブジェクトには、次のメソッドがあります。
- Wave_write.close()
- nframes が正しいことを確認し、 wave によって開かれた場合はファイルを閉じます。 このメソッドは、オブジェクトの収集時に呼び出されます。
- Wave_write.setnchannels(n)
- チャンネル数を設定します。
- Wave_write.setsampwidth(n)
- サンプル幅を n バイトに設定します。
- Wave_write.setframerate(n)
- フレームレートを n に設定します。
- Wave_write.setnframes(n)
- フレーム数を n に設定します。 より多くのフレームが書き込まれる場合、これは後で変更されます。
- Wave_write.setcomptype(type, name)
- 圧縮の種類と説明を設定します。 現時点では、圧縮タイプ
NONE
のみがサポートされており、圧縮はサポートされていません。
- Wave_write.setparams(tuple)
- タプルは
(nchannels, sampwidth, framerate, nframes, comptype, compname)
であり、値はset*()
メソッドに有効である必要があります。 すべてのパラメータを設定します。
- Wave_write.tell()
- Wave_read.tell()メソッドと Wave_read.setpos()メソッドについても同じ免責事項を使用して、ファイル内の現在の位置を返します。
- Wave_write.writeframesraw(data)
- nframes を修正せずにオーディオフレームを書き込みます。
- Wave_write.writeframes(data)
- オーディオフレームを書き込み、 nframes が正しいことを確認します。
writeframes()
またはwriteframesraw()
を呼び出した後にパラメータを設定することは無効であり、そうしようとすると wave.Error が発生することに注意してください。