sppluginモジュール¶
spPlugin に基づく音声ファイル入出力のpythonモジュールです.WAV,AIFF,MP3,Ogg Vorbis,FLAC,ALAC,rawなど,様々なファイル形式をプラグインによりサポートしています.
サンプル
下記は入力音声ファイルの波形をプロットする例です.
import os
import sys
import spplugin
import numpy as np
import matplotlib.pyplot as plt
def plotfilebyplugin(filename):
with spplugin.open(filename, 'r') as pf:
nchannels = pf.getnchannels()
samprate = pf.getsamprate()
sampbit = pf.getsampbit()
nframes = pf.getnframes()
duration = nframes / samprate
y = pf.createndarray(nframes * nchannels)
nread = pf.read(y)
print('nread = %d' % nread)
y.resize((nframes, nchannels))
x = np.linspace(0.0, duration, nframes)
for i in range(nchannels):
plt.plot(x, y[:,i])
plt.xlim(0.0, duration)
plt.xlabel('Time [s]')
plt.ylabel('Amplitude (normalized)')
plt.show()
if __name__ == '__main__':
if len(sys.argv) <= 1:
print('usage: %s filename'
% os.path.basename(sys.argv[0]), file=sys.stderr)
quit()
plotfilebyplugin(sys.argv[1])
-
exception
spplugin.
BogusFileError
[ソース]¶ ベースクラス:
spplugin.Error
音声ファイルに異常がある場合に発生する例外です.
-
exception
spplugin.
FileError
[ソース]¶ ベースクラス:
spplugin.Error
音声ファイルの問題により発生する例外です.
-
exception
spplugin.
FileTypeError
[ソース]¶ ベースクラス:
spplugin.Error
ファイル形式がサポートされていない場合に発生する例外です.
-
exception
spplugin.
NChannelsError
[ソース]¶ ベースクラス:
spplugin.Error
チャネル数がサポートされていない場合に発生する例外です.
-
exception
spplugin.
SampleBitError
[ソース]¶ ベースクラス:
spplugin.Error
ビット/サンプルがサポートされていない場合に発生する例外です.
-
exception
spplugin.
SampleRateError
[ソース]¶ ベースクラス:
spplugin.Error
サンプルレートがサポートされていない場合に発生する例外です.
-
class
spplugin.
SpFilePlugin
[ソース]¶ ベースクラス:
object
音声ファイル入出力のためのクラスです.このクラスは,標準ライブラリのaifcやwave,sunauと同じように用いることができます.異なる点としては,パラメータを指定する
set*()
関数群がopen()
の前に呼び出す必要がある点などが挙げられます.これらのパラメータは,関数open()
のオプション引数でも指定できます.-
copyarray2raw
(inarray, sampwidth, bigendian_or_signed8bit=False)[ソース]¶ 生の配列 (array.array) の内容を,新たな生のbytesまたはbytearrayのデータにコピーします.
- パラメータ
inarray (array.array) -- 入力のbytearrayオブジェクトを指定します.
sampwidth (int) -- 出力データのバイト/サンプルを指定します.
bigendian_or_signed8bit (bool) -- 出力データのエンディアンがビッグエンディアンの場合(16ビットか32ビットの場合)もしくは出力データのデータ型が符号付き8ビットデータの場合(8ビットの場合のみ)に
True
を指定します.
- 戻り値
変換されたデータを含む bytearray クラスのオブジェクトが返ります.
- 戻り値の型
bytearray
-
copyraw2array
(rawdata, sampwidth, bigendian_or_signed8bit=False)[ソース]¶ 生のbytesまたはbytearrayのデータの内容を,新たな生の配列 (array.array) にコピーします.
- パラメータ
rawdata (bytes or bytearray) -- 入力の bytes オブジェクトまたは bytearray オブジェクトを指定します.
sampwidth (int) -- rawdataのバイト/サンプルを指定します.
bigendian_or_signed8bit (bool) -- rawdata のエンディアンがビッグエンディアンの場合(16ビットか32ビットの場合)もしくはrawdata のデータ型が符号付き8ビットデータの場合(8ビットの場合のみ)に
True
を指定します.
- 戻り値
変換されたデータを含む array クラスのオブジェクトが返ります.
- 戻り値の型
array.array
-
createarray
(length, nframesflag=False)[ソース]¶ 現在のファイル設定に応じたdouble arrayを作成します.
- パラメータ
length -- 配列の長さを指定します.この長さはいわゆるフレーム数とは異なりますのでご注意ください(length = nframes * nchannels).フレーム数を指定したい場合は第2引数に
True
を指定します.nframesflag (bool) -- 第1引数にフレーム数を指定したい場合は
True
を指定します.
- 戻り値
現在のファイルの設定に応じた配列クラスです.
- 戻り値の型
array.array
-
createndarray
(length, nframesflag=False)[ソース]¶ 現在のファイルの設定に応じたnumpyのdouble arrayを作成します.
- パラメータ
length -- 配列の長さを指定します.この長さはいわゆるフレーム数とは異なりますのでご注意ください(length = nframes * nchannels).フレーム数を指定したい場合は第2引数に
True
を指定します.nframesflag (bool) -- 第1引数にフレーム数を指定したい場合は
True
を指定します.
- 戻り値
現在のファイルの設定に応じたndarrayクラスです.
- 戻り値の型
numpy.ndarray
-
createrawarray
(length, nframesflag=False)[ソース]¶ 現在のファイルの設定に応じた生の配列を作成します.
- パラメータ
length -- 配列の長さを指定します.この長さはいわゆるフレーム数とは異なりますのでご注意ください(length = nframes * nchannels).フレーム数を指定したい場合は第2引数に
True
を指定します.nframesflag (bool) -- 第1引数にフレーム数を指定したい場合は
True
を指定します.
- 戻り値
現在のファイルの設定に応じた配列クラスです.
- 戻り値の型
array.array
-
createrawndarray
(length, nframesflag=False)[ソース]¶ 現在のファイルの設定に応じた生のnumpyのndarrayを作成します.
- パラメータ
length -- 配列の長さを指定します.この長さはいわゆるフレーム数とは異なりますのでご注意ください(length = nframes * nchannels).フレーム数を指定したい場合は第2引数に
True
を指定します.nframesflag (bool) -- 第1引数にフレーム数を指定したい場合は
True
を指定します.
- 戻り値
現在のファイルの設定に応じたndarrayクラスです.
- 戻り値の型
numpy.ndarray
-
getcompname
(decodebytes=False)[ソース]¶ 圧縮形式の詳細名が返ります.現在の所,
'not compressed'
(decodebytes =True
の場合) またはb'not compressed'
(decodebytes =False
の場合) のいずれかになります.
-
getcomptype
(decodebytes=False)[ソース]¶ 圧縮形式が返ります.現在の所,
'NONE'
(decodebytes =True
の場合) またはb'NONE'
(decodebytes =False
の場合) のいずれかになります.
-
getndarraydtype
()[ソース]¶ double型配列を保持するためのnumpyのndarray用のdtype文字列を取得します.
- 戻り値
現在の設定のdtype文字列です.
- 戻り値の型
string
-
getparams
()[ソース]¶ 現在のファイルの全てのパラメータをdictオブジェクトで取得します.
- 戻り値
キーが
'nchannels'
,'sampbit'
,'samprate'
,'length'
,'filetype'
,'songinfo'
になっているdictオブジェクトが返ります.- 戻り値の型
dict
-
getparamstuple
(decodebytes=False)[ソース]¶ 現在のファイルの全てのパラメータをnamedtupleオブジェクトで取得します.
- パラメータ
decodebytes (bool) --
True
の場合は,getcomptype()
及びgetcompname()
で得られるbytesオブジェクトを文字列オブジェクトにデコードします.標準ライブラリのwave,sunauはデコードされた文字列オブジェクトを要求するのに対し,こちらも標準ライブラリのaifcはbytesオブジェクトを要求するため,この引数が用意されています.- 戻り値
現在のファイルの全てのパラメータを含むnamedtupleオブジェクトが返ります.このnamedtupleオブジェクトは,内容が
(nchannels, sampwidth, framerate, nframes, comptype, compname)
になっており,aifc,wave,sunauの標準ライブラリにおけるsetparams()
の引数として与えることが可能です.- 戻り値の型
namedtuple
-
open
(filename, mode, *, pluginname=None, samprate=0, sampbit=0, nchannels=0, filetype=None, songinfo=None, params=None)[ソース]¶ プラグインを用いてファイル名と対応するファイルを開きます.
- パラメータ
filename (str) -- 開くファイルのファイル名を指定します.
mode (str) -- ファイルを開く際のモードを指定します.読み込みモードの
'r'
,書き込みモードの'w'
があります.pluginname (str) -- 適切なプラグインが見つからなかった際に用いられるプラグイン名を指定します.
samprate (double) -- サンプルレート.
sampbit (int) -- ビット/サンプル.
nchannels (int) -- チャネル数.
filetype (str) -- ファイル形式の文字列
songinfo (dict) -- ソング情報.
params (dict) -- dict形式の上記の全てのパラメータ.
-
read
(data, weight=1.0, offset=0, length=0)[ソース]¶ 音声ファイルからdouble型配列にデータを読み込みます.
- パラメータ
data (bytearray, array.array or numpy.ndarray) -- 音声ファイルから読み込むためのdouble型配列のバッファを指定します.
weight (double) -- 読み込み後のデータに乗じられる重み係数を指定します.
offset (int) -- オプションのバッファに対するオフセットを指定します.
length (int) -- オプションのファイルの全体の時間長を設定します.
- 戻り値
成功した場合には読み込みサイズが返り,失敗した場合には-1が返ります.
- 戻り値の型
int
注釈
キーワード引数の offset と length はバージョン0.7.5で導入されました.
-
readraw
(data, offset=0, length=0)[ソース]¶ 音声ファイルから生データを読み込みます.
- パラメータ
data (bytearray, array.array or numpy.ndarray) -- 音声ファイルから生データを読み込むためのバッファを指定します.
offset (int) -- オプションのバッファに対するオフセットを指定します.
length (int) -- オプションのファイルの全体の時間長を設定します.
- 戻り値
成功した場合には読み込みサイズが返り,失敗した場合には-1が返ります.
- 戻り値の型
int
注釈
キーワード引数の offset と length はバージョン0.7.5で導入されました.
-
setparams
(params)[ソース]¶ dictオブジェクトもしくはnamedtupleオブジェクトの形でパラメータを設定します.
- パラメータ
params (dict) --
'nchannels'
,'sampbit'
,'samprate'
,'length'
,'filetype'
,'songinfo'
のキーを持つdictオブジェクトを指定します.標準ライブラリのaifc,wave,sunauで用いられるnamedtupleオブジェクトを指定することもできます.
-
write
(data, weight=1.0, offset=0, length=0)[ソース]¶ double型配列のデータを音声ファイルへ書き込みます.
- パラメータ
data (bytearray, array.array or numpy.ndarray) -- 音声ファイルに書き込むためのdouble型配列のバッファを指定します.
weight (double) -- 書き込み前のデータに乗じられる重み係数を指定します.
offset (int) -- オプションのバッファに対するオフセットを指定します.
length (int) -- オプションのバッファに対する書き込み長を指定します.
- 戻り値
成功した場合には書き込まれたサイズが返り,失敗した場合には-1が返ります.
- 戻り値の型
int
注釈
キーワード引数の offset と length はバージョン0.7.5で導入されました.
-
writeraw
(data, offset=0, length=0)[ソース]¶ 音声ファイルに生データを書き込みます.
- パラメータ
data (bytearray, array.array or numpy.ndarray) -- 音声ファイルに生データを書き込むためのバッファを指定します.
offset (int) -- オプションのバッファに対するオフセットを指定します.
length (int) -- オプションのバッファに対する書き込み長を指定します.
- 戻り値
成功した場合には書き込まれたサイズが返り,失敗した場合には-1が返ります.
- 戻り値の型
int
注釈
キーワード引数の offset と length はバージョン0.7.5で導入されました.
-
-
exception
spplugin.
SuitableNotFoundError
[ソース]¶ ベースクラス:
spplugin.Error
適切なプラグインが見つからなかった場合に発生する例外です.
-
exception
spplugin.
TotalLengthRequiredError
[ソース]¶ ベースクラス:
spplugin.Error
ファイルの時間長が要求されるプラグインの場合に発生する例外です.
-
exception
spplugin.
WrongPluginError
[ソース]¶ ベースクラス:
spplugin.Error
不適切なプラグインの場合に発生する例外です.
-
spplugin.
open
(filename, mode, *, pluginname=None, samprate=0, sampbit=0, nchannels=0, filetype=None, songinfo=None, params=None)[ソース]¶ プラグインを用いてファイル名と対応するファイルを開きます.この関数は
with
文の中で使うことを想定しています.- パラメータ
filename (str) -- 開くファイルのファイル名を指定します.
mode (str) -- ファイルを開く際のモードを指定します.読み込みモードの
'r'
,書き込みモードの'w'
があります.pluginname (str) -- 適切なプラグインが見つからなかった際に用いられるプラグイン名を指定します.
samprate (double) -- サンプルレート.
sampbit (int) -- ビット/サンプル.
nchannels (int) -- チャネル数.
filetype (str) -- ファイル形式の文字列
songinfo (dict) -- ソング情報.
params (dict) -- dict形式の上記の全てのパラメータ.
- 戻り値
SpFilePlugin
クラスの新規インスタンスです.- 戻り値の型