wavを読み取るためのさまざまなPythonモジュール:
ウェーブオーディオファイルを読み取るには、少なくとも次のライブラリがあります。
最も簡単な例:
これはSoundFileの簡単な例です。
import soundfile as sf
data, samplerate = sf.read('existing_file.wav')
出力のフォーマット:
警告、データは常に同じ形式であるとは限りません。これはライブラリによって異なります。例えば:
from scikits import audiolab
from scipy.io import wavfile
from sys import argv
for filepath in argv[1:]:
x, fs, nb_bits = audiolab.wavread(filepath)
print('Reading with scikits.audiolab.wavread:', x)
fs, x = wavfile.read(filepath)
print('Reading with scipy.io.wavfile.read:', x)
出力:
Reading with scikits.audiolab.wavread: [ 0. 0. 0. ..., -0.00097656 -0.00079346 -0.00097656]
Reading with scipy.io.wavfile.read: [ 0 0 0 ..., -32 -26 -32]
SoundFileとAudiolabは、-1と1の間で浮動小数点数を返します(matabと同様に、これはオーディオ信号の規則です)。Scipyとwaveは整数を返します。これは、エンコードのビット数に応じて浮動小数点数に変換できます。次に例を示します。
from scipy.io.wavfile import read as wavread
samplerate, x = wavread(audiofilename)
if x.dtype == 'int16':
nb_bits = 16
elif x.dtype == 'int32':
nb_bits = 32
max_nb_bit = float(2 ** (nb_bits - 1))
samples = x / (max_nb_bit + 1)