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.Error[ソース]

ベースクラス: Exception

sppluginの基本例外クラスです.

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() のオプション引数でも指定できます.

appendsonginfo(songinfo)[ソース]

ソング情報を現在保持されている内部変数に追加します.

close()[ソース]

音声ファイルを閉じます.

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

getarraytypecode()[ソース]

double型配列を保持する場合の型コードを取得します.

戻り値

現在の設定に応じたdouble型配列の型コードです.

戻り値の型

char

getcompname(decodebytes=False)[ソース]

圧縮形式の詳細名が返ります.現在の所, 'not compressed' (decodebytes = True の場合) または b'not compressed' (decodebytes = False の場合) のいずれかになります.

getcomptype(decodebytes=False)[ソース]

圧縮形式が返ります.現在の所, 'NONE' (decodebytes = True の場合) または b'NONE' (decodebytes = False の場合) のいずれかになります.

getfiledesc()[ソース]

現在のファイルの説明を取得します.例えば,PCMのWavファイルは, 'Microsoft PCM' になります.

getfilefilter()[ソース]

現在のファイルのファイルフィルター(例えば '*.wav' )を取得します.

getfiletype()[ソース]

現在のファイルのファイル形式を取得します.

getframerate()[ソース]

現在のファイルのサンプルレートを取得します.

getlength()[ソース]

現在のファイルの長さを取得します.

getmark(id)[ソース]

何もしません(aifc,wave,sunauの標準ライブラリとの互換性のために用意されています).

getmarkers()[ソース]

何もしません(aifc,wave,sunauの標準ライブラリとの互換性のために用意されています).

getnchannels()[ソース]

現在のファイルのチャネル数を取得します.

getndarraydtype()[ソース]

double型配列を保持するためのnumpyのndarray用のdtype文字列を取得します.

戻り値

現在の設定のdtype文字列です.

戻り値の型

string

getnframes()[ソース]

現在のファイルのフレーム数を取得します.

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

getplugindesc()[ソース]

現在使用しているプラグインの短い情報を取得します.

getpluginid()[ソース]

現在使用しているプラグインのIDを取得します.

getplugininfo()[ソース]

現在使用しているプラグインの詳細情報を取得します.

getpluginname()[ソース]

現在使用しているプラグインの名前を取得します.

getpluginversion()[ソース]

現在使用しているプラグインのバージョンを取得します.

getrawarraytypecode()[ソース]

pythonの配列の型コードを取得します.

戻り値

現在の設定の型コードです.

戻り値の型

char

getrawndarraydtype()[ソース]

numpyのndarray用のdtype文字列を取得します.

戻り値

現在の設定のdtype文字列です.

戻り値の型

string

getrawsampbit()[ソース]

生バッファ用のビット/サンプルを取得します.

getrawsampwidth()[ソース]

生バッファ用のバイト/サンプルを取得します.

getsampbit()[ソース]

現在のファイルのビット/サンプルを取得します.sampbit = 33は,32ビットfloat型と対応します.

getsamprate()[ソース]

現在のファイルのサンプルレートを取得します.

getsampwidth()[ソース]

現在のファイルのバイト/サンプルを取得します.

getsonginfo()[ソース]

現在のファイルのソング情報を取得します.

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

注釈

キーワード引数の offsetlength はバージョン0.7.5で導入されました.

readraw(data, offset=0, length=0)[ソース]

音声ファイルから生データを読み込みます.

パラメータ
  • data (bytearray, array.array or numpy.ndarray) -- 音声ファイルから生データを読み込むためのバッファを指定します.

  • offset (int) -- オプションのバッファに対するオフセットを指定します.

  • length (int) -- オプションのファイルの全体の時間長を設定します.

戻り値

成功した場合には読み込みサイズが返り,失敗した場合には-1が返ります.

戻り値の型

int

注釈

キーワード引数の offsetlength はバージョン0.7.5で導入されました.

rewind()[ソース]

ファイルの先頭に移動します.

setcomptype(encodestr=True)[ソース]

圧縮形式を設定します.現在,このパラメータは無視されます.

setfiletype(filetype)[ソース]

ファイルにファイル形式を設定します.

setframerate(samprate)[ソース]

ファイルにサンプルレートを設定します.

setlength(length)[ソース]

ファイルの全体の時間長を設定します.

setmark(id, pos, name)[ソース]

何もしません(aifc,wave,sunauの標準ライブラリとの互換性のために用意されています).

setnchannels(nchannels)[ソース]

ファイルにチャネル数を設定します.

setnframes(length)[ソース]

現在のファイルの総フレーム数を設定します.

setparams(params)[ソース]

dictオブジェクトもしくはnamedtupleオブジェクトの形でパラメータを設定します.

パラメータ

params (dict) -- 'nchannels', 'sampbit', 'samprate', 'length', 'filetype', 'songinfo' のキーを持つdictオブジェクトを指定します.標準ライブラリのaifc,wave,sunauで用いられるnamedtupleオブジェクトを指定することもできます.

setpos(pos)[ソース]

指定した位置に移動します.

パラメータ

pos -- 移動先の位置を指定します.

setsampbit(sampbit)[ソース]

ファイルにビット/サンプルを設定します.sampbit = 33は,32ビットfloat型と対応します.

setsamprate(samprate)[ソース]

ファイルにサンプルレートを設定します.

setsampwidth(sampwidth, floatflag=False)[ソース]

現在のファイルのバイト/サンプルを取得します.

setsonginfo(songinfo)[ソース]

ファイルにソング情報を設定します.

tell()[ソース]

ファイルの中の現在の位置を取得します.

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

注釈

キーワード引数の offsetlength はバージョン0.7.5で導入されました.

writeraw(data, offset=0, length=0)[ソース]

音声ファイルに生データを書き込みます.

パラメータ
  • data (bytearray, array.array or numpy.ndarray) -- 音声ファイルに生データを書き込むためのバッファを指定します.

  • offset (int) -- オプションのバッファに対するオフセットを指定します.

  • length (int) -- オプションのバッファに対する書き込み長を指定します.

戻り値

成功した場合には書き込まれたサイズが返り,失敗した場合には-1が返ります.

戻り値の型

int

注釈

キーワード引数の offsetlength はバージョン0.7.5で導入されました.

exception spplugin.SuitableNotFoundError[ソース]

ベースクラス: spplugin.Error

適切なプラグインが見つからなかった場合に発生する例外です.

exception spplugin.TotalLengthRequiredError[ソース]

ベースクラス: spplugin.Error

ファイルの時間長が要求されるプラグインの場合に発生する例外です.

exception spplugin.WrongPluginError[ソース]

ベースクラス: spplugin.Error

不適切なプラグインの場合に発生する例外です.

spplugin.getplugindesc(name)[ソース]

プラグイン名からプラグインの短い情報を取得します.

spplugin.getplugininfo(name)[ソース]

プラグイン名からプラグインの詳細情報を取得します.

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 クラスの新規インスタンスです.

戻り値の型

SpFilePlugin