spaudioモジュール

spAudio に基づくオーディオ入出力のpythonモジュールです.

サンプル

下記はフルデュプレックスオーディオ入出力を実現する例です(バージョン0.7.15以上).

import spaudio

with spaudio.open('rw', nchannels=2, samprate=44100, buffersize=2048) as a:
    nloop = 500
    b = bytearray(4096)

    for i in range(nloop):
        a.readraw(b)
        a.writeraw(b)
exception spaudio.DeviceError[ソース]

ベースクラス: Error

オーディオデバイスの問題による例外です.

exception spaudio.DriverError[ソース]

ベースクラス: Error

オーディオドライバーの問題による例外です.

exception spaudio.Error[ソース]

ベースクラス: Exception

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

class spaudio.SpAudio(drivername=None)[ソース]

ベースクラス: object

オーディオ入出力のためのクラスです.

パラメータ:

drivername (str) -- 初期化するドライバー名を指定します.

close()[ソース]

オーディオデバイスを閉じます.

createarray(length, nframesflag=False)[ソース]

現在のデバイス設定に応じたdouble型配列を作成します.

パラメータ:
  • length -- 配列の長さを指定します.この長さはいわゆるフレーム数とは異なりますのでご注意ください(length = nframes * nchannels).フレーム数を指定したい場合は第2引数に True を指定します.

  • nframesflag (bool, optional) -- 第1引数にフレーム数を指定したい場合は True を指定します.

戻り値:

現在のデバイスの設定に応じたarrayクラスのオブジェクトが返ります.

戻り値の型:

array.array

createndarray(length, nframesflag=False, channelwise=False)[ソース]

現在のデバイスの設定に応じたnumpyのdouble型配列を作成します.

パラメータ:
  • length -- 配列の長さを指定します.この長さはいわゆるフレーム数とは異なりますのでご注意ください(length = nframes * nchannels).フレーム数を指定したい場合は第2引数に True を指定します.

  • nframesflag (bool, optional) -- 第1引数にフレーム数を指定したい場合は True を指定します.

  • channelwise (bool, optional) -- True を指定すると出力配列が (nframes, nchannels) の行列にリサイズされます.この引数はバージョン0.7.16にて導入されました.

戻り値:

現在のデバイスの設定に応じたndarrayクラスのオブジェクトが返ります.

戻り値の型:

numpy.ndarray

createrawarray(length, nframesflag=False)[ソース]

現在のデバイスの設定に応じたRaw形式配列を作成します.

パラメータ:
  • length -- 配列の長さを指定します.この長さはいわゆるフレーム数とは異なりますのでご注意ください(length = nframes * nchannels).フレーム数を指定したい場合は第2引数に True を指定します.

  • nframesflag (bool, optional) -- 第1引数にフレーム数を指定したい場合は True を指定します.

戻り値:

現在のデバイスの設定に応じたarrayクラスのオブジェクトが返ります.

戻り値の型:

array.array

createrawndarray(length, nframesflag=False, channelwise=False)[ソース]

現在のデバイスの設定に応じたRaw形式のnumpyのndarrayを作成します.

パラメータ:
  • length -- 配列の長さを指定します.この長さはいわゆるフレーム数とは異なりますのでご注意ください(length = nframes * nchannels).フレーム数を指定したい場合は第2引数に True を指定します.

  • nframesflag (bool, optional) -- 第1引数にフレーム数を指定したい場合は True を指定します.

  • channelwise (bool, optional) -- True を指定すると出力配列が (nframes, nchannels) の行列にリサイズされます.この引数はバージョン0.7.16にて導入されました.

戻り値:

現在のデバイスの設定に応じたndarrayクラスのオブジェクトが返ります.

戻り値の型:

numpy.ndarray

getarraytypecode()[ソース]

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

戻り値:

現在の設定に応じたdouble型配列の型コードが返ります.

戻り値の型:

char

getblockingmode()[ソース]

現在のデバイスのブロッキングモードを取得します.

戻り値:

0 = ブロッキングモード(デフォルト),1 = ノンブロッキングモード.

戻り値の型:

int

getbuffersize()[ソース]

現在のデバイスのバッファサイズを取得します.

getcompname(decodebytes=False)[ソース]

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

getcomptype(decodebytes=False)[ソース]

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

getdevicelist()[ソース]

オーディオデバイスのリストを取得します.

getdevicename(deviceindex)[ソース]

オーディオデバイスの名前を取得します.

getframerate()[ソース]

現在のデバイスのサンプルレートを取得します.

getnbuffers()[ソース]

現在のデバイスのバッファ数を取得します.

getnchannels()[ソース]

現在のデバイスのチャネル数を取得します.

getndarraydtype()[ソース]

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

戻り値:

現在の設定のdtype文字列が返ります.

戻り値の型:

string

getndevices()[ソース]

オーディオデバイスの数を取得します.

getparams()[ソース]

現在のデバイスの全てのパラメータをdictオブジェクトで取得します.

戻り値:

キーが 'nchannels', 'sampbit', 'samprate', 'blockingmode', 'buffersize', 'nbuffers' になっているdictオブジェクトが返ります.

戻り値の型:

dict

getparamstuple(decodebytes=False, nframes=0)[ソース]

現在のデバイスの全てのパラメータをnamedtupleオブジェクトで取得します.

パラメータ:
  • decodebytes (bool, optional) -- True の場合は, 'comptype' 及び 'compname' 用のbytesオブジェクトを文字列オブジェクトにデコードします.標準ライブラリのwave,sunauはデコードされた文字列オブジェクトを要求するのに対し,こちらも標準ライブラリのaifcはbytesオブジェクトを要求するため,この引数が用意されています.

  • nframes (int, optional) -- 音声ファイルのフレーム数を指定します.指定がない場合は,出力されるtupleの第4要素は0になります.

戻り値:

現在のデバイスの全てのパラメータを含むnamedtupleオブジェクトが返ります.このnamedtupleオブジェクトは,内容が (nchannels, sampwidth, framerate, nframes, comptype, compname) になっており,aifc,wave,sunauの標準ライブラリにおける setparams() の引数として与えることが可能です.

戻り値の型:

namedtuple

getrawarraytypecode()[ソース]

Raw形式のデータを保持するためのpythonの配列の型コードを取得します.

戻り値:

現在の設定の型コードが返ります.

戻り値の型:

char

getrawndarraydtype()[ソース]

Raw形式のデータを保持するためのnumpyのndarray用のdtype文字列を取得します.

戻り値:

現在の設定のdtype文字列が返ります.

戻り値の型:

string

getrawsampbit()[ソース]

Raw形式配列用のビット/サンプルを取得します.

getrawsampwidth()[ソース]

Raw形式配列用のバイト/サンプルを取得します.

getsampbit()[ソース]

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

getsamprate()[ソース]

現在のデバイスのサンプルレートを取得します.

getsampwidth()[ソース]

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

open(mode, *, callback=None, deviceindex=- 1, samprate=0, sampbit=0, nchannels=0, blockingmode=- 1, buffersize=0, nbuffers=0, params=None)[ソース]

現在のデバイスを開きます

パラメータ:
  • mode (str) -- デバイスを開く際のモードを指定します.読み込みモードの 'r' ,書き込みモードの 'w' があります.また,読み込み専用モードの 'ro' と書き込み専用モードの 'wo' も用意されており,これらのモードではいずれかのモードでしか開けなくなりますが,環境によっては処理が軽くなることがあります.

  • callback (tuple, optional) -- コールバック関数などが含まれる, setcallback() に与える全ての引数を含むtupleを指定します.

  • deviceindex (int, optional) -- 選択したいオーディオデバイスのインデックスを指定します.

  • samprate (double, optional) -- 現在のデバイスのサンプルレートを設定します.

  • sampbit (int, optional) -- 現在のデバイスのビット/サンプルを設定します.

  • nchannels (int, optional) -- 現在のデバイスのチャネル数を設定します.

  • blockingmode (int, optional) -- 0 = ブロッキングモード(デフォルト),1 = ノンブロッキングモード.

  • buffersize (int, optional) -- 現在のデバイスのバッファサイズを設定します.

  • nbuffers (int, optional) -- 現在のデバイスのバッファ数を設定します.

  • params (dict, optional) -- 上記の samprate から nbuffers までの任意のパラメータが含まれ得るdictオブジェクトを指定します.

注釈

キーワード引数のサポートはバージョン0.7.15で追加されました.

read(data, weight=1.0, offset=0, length=0)[ソース]

オーディオデバイスからdouble型配列にデータを読み込みます.

パラメータ:
  • data (bytearray, array.array or numpy.ndarray) -- オーディオデバイスから読み込むためのdouble型配列を指定します.

  • weight (double, optional) -- 読み込み後のデータに乗じられる重み係数を指定します.

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

  • length (int, optional) -- オプションの配列に対する読み込み長を指定します.

戻り値:

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

戻り値の型:

int

注釈

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

readframes(nframes, weight=1.0, arraytype='ndarray', channelwise=False)[ソース]

次の nframes 分のデータを読み込み,double型配列を返します.

パラメータ:
  • nframes (int) -- 読み込むフレーム数を指定します.

  • weight (double, optional) -- 読み込み後のデータに乗じられる重み係数を指定します.

  • arraytype (str, optional) -- 出力配列の型を指定します. 'ndarray' (デフォルト), 'array', 'bytearray' のいずれかを指定します.

  • channelwise (bool, optional) -- True を指定すると出力のndarrayが (nframes, nchannels) の行列にリサイズされます.この引数は 'ndarray' の場合にだけ有効となります.

戻り値:

読み込まれたデータが含まれる配列が返ります.

戻り値の型:

numpy.ndarray, array.array or bytearray

注釈

この関数はバージョン0.7.16にて導入されました.

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

オーディオデバイスからRaw形式のデータを読み込みます.

パラメータ:
  • data (bytearray, array.array or numpy.ndarray) -- オーディオデバイスからRaw形式のデータを読み込むためのRaw形式配列を指定します.

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

  • length (int, optional) -- オプションの配列に対する読み込み長を指定します.

戻り値:

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

戻り値の型:

int

注釈

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

readrawframes(nframes, arraytype='ndarray', channelwise=False)[ソース]

次の nframes 分のデータを読み込み,Raw形式配列を返します.

パラメータ:
  • nframes (int) -- 読み込むフレーム数を指定します.

  • arraytype (str, optional) -- 出力配列の型を指定します. 'ndarray' (デフォルト), 'array', 'bytearray' のいずれかを指定します.

  • channelwise (bool, optional) -- True を指定すると出力のndarrayが (nframes, nchannels) の行列にリサイズされます.この引数は 'ndarray' の場合にだけ有効となります.

戻り値:

読み込まれたデータが含まれる配列が返ります.

戻り値の型:

numpy.ndarray, array.array or bytearray

注釈

この関数はバージョン0.7.16にて導入されました.

reload(drivername=None)[ソース]

別のオーディオドライバーを再読込します.

selectdevice(deviceindex)[ソース]

指定されたインデックスと対応するオーディオデバイスを選択します.

パラメータ:

deviceindex (int) -- オーディオデバイスのインデックスを指定します.

例外:
  • ValueError -- deviceindex がデバイス数以上の場合に発生します.

  • DriverError -- オーディオデバイスが選択できない場合に発生します.

setblockingmode(mode)[ソース]

現在のデバイスのブロッキングモードを設定します.

パラメータ:

mode (int) -- 0 = ブロッキングモード(デフォルト),1 = ノンブロッキングモード.

setbuffersize(buffersize)[ソース]

現在のデバイスのバッファサイズを設定します.

setcallback(calltype, func, *args)[ソース]

コールバック関数を設定します.

パラメータ:
  • calltype (int) -- コールバックタイプのコンビネーションで指定します.現在は, OUTPUT_POSITION_CALLBACKOUTPUT_BUFFER_CALLBACK がサポートされています.

  • func (callable) -- コールバック関数を指定します.コールバック関数は,callbacksignature() で説明されるシグネチャを持つ必要があります.

  • *args -- コールバック関数に渡す可変長の引数リストを指定します.

例外:

DriverError -- コールバック関数が設定できなかった時に発生します.

setcomptype(encodestr=True)[ソース]

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

setframerate(samprate)[ソース]

現在のデバイスのサンプルレートを設定します.

setnbuffers(nbuffers)[ソース]

現在のデバイスのバッファ数を設定します.

setnchannels(nchannels)[ソース]

現在のデバイスのチャネル数を設定します.

setparams(params)[ソース]

サポートされている全てのパラメータを,dictオブジェクトもしくは namedtupleオブジェクトの形でデバイスに設定します.

パラメータ:

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

setsampbit(sampbit)[ソース]

現在のデバイスのビット/サンプルを設定します.sampbit = 33は,32ビットfloat型と対応します.

setsamprate(samprate)[ソース]

現在のデバイスのサンプルレートを設定します.

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

現在のデバイスのバイト/サンプルを設定します.

stop()[ソース]

オーディオ入出力を停止します.

sync()[ソース]

オーディオ入出力を同期します.

terminate()[ソース]

現在のオーディオドライバーの使用を終了します.

write(data, weight=1.0, offset=0, length=0)[ソース]

double型配列のデータをオーディオデバイスへ書き込みます.

パラメータ:
  • data (bytearray, array.array or numpy.ndarray) -- オーディオデバイスに書き込むためのdouble型配列を指定します.

  • weight (double, optional) -- 書き込み前のデータに乗じられる重み係数を指定します.

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

  • length (int, optional) -- オプションの配列に対する書き込み長を指定します.

戻り値:

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

戻り値の型:

int

注釈

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

writeframes(data, weight=1.0)[ソース]

double型配列のデータをオーディオデバイスへ書き込みます.

パラメータ:
  • data (bytearray, array.array or numpy.ndarray) -- オーディオデバイスに書き込むためのdouble型配列を指定します.

  • weight (double, optional) -- 書き込み前のデータに乗じられる重み係数を指定します.

戻り値:

成功した場合には書き込まれたフレーム数が返り,失敗した場合には-1が返ります.

戻り値の型:

int

注釈

この関数はバージョン0.7.16にて導入されました.

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

オーディオデバイスにRaw形式配列のデータを書き込みます.

パラメータ:
  • data (bytearray, array.array or numpy.ndarray) -- オーディオデバイスに書き込むためのRaw形式配列を指定します.

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

  • length (int, optional) -- オプションの配列に対する書き込み長を指定します.

戻り値:

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

戻り値の型:

int

注釈

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

writerawframes(data)[ソース]

オーディオデバイスにRaw形式配列のデータを書き込みます.

パラメータ:

data (bytearray, array.array or numpy.ndarray) -- オーディオデバイスに書き込むためのRaw形式配列を指定します.

戻り値:

成功した場合には書き込まれたフレーム数が返り,失敗した場合には-1が返ります.

戻り値の型:

int

注釈

この関数はバージョン0.7.16にて導入されました.

spaudio.callbacksignature(audio, calltype, cbdata, args)[ソース]

setcallback() で指定するコールバック関数のシグネチャです.

パラメータ:
  • audio (SpAudio) -- SpAudio クラスのインスタンスです.

  • calltype (int) -- コールバックタイプです. OUTPUT_POSITION_CALLBACKOUTPUT_BUFFER_CALLBACK になります.

  • cbdata -- コールバック依存データです. OUTPUT_POSITION_CALLBACK では位置 (int) , OUTPUT_BUFFER_CALLBACK ではバッファ (bytes) です.

  • args -- setcallback() にて指定された可変長の引数リストです.この関数内では, args には * の接頭辞は必要ありません.

戻り値:

コールバックをこれ以上呼び出したくない場合は, False を返します.

戻り値の型:

bool

spaudio.getdriverdevicename(index, drivername=None)[ソース]

ドライバーにおけるオーディオデバイスの名前を取得します.

パラメータ:
  • index (int) -- オーディオデバイスのインデックスを指定します.

  • drivername (str) -- オプションのドライバー名を指定します.

戻り値:

デバイス名が含まれる文字列が返ります.

戻り値の型:

string

例外:

ValueError -- index がデバイス数以上の場合に発生します.

spaudio.getdriverlist()[ソース]

ドライバー名のリストを取得します.

spaudio.getdrivername(index)[ソース]

指定されたインデックスと対応するオーディオドライバーの名前を取得します.

パラメータ:

index (int) -- オーディオドライバーのインデックスを指定します.

戻り値:

ドライバー名が含まれる文字列が返ります.

戻り値の型:

string

例外:

ValueError -- index がドライバー数以上の場合に発生します.

spaudio.getndriverdevices(drivername=None)[ソース]

ドライバーにおけるデバイス数を取得します.

spaudio.getndrivers()[ソース]

ドライバー数を取得します.

spaudio.open(mode, *, drivername=None, callback=None, deviceindex=- 1, samprate=0, sampbit=0, nchannels=0, blockingmode=- 1, buffersize=0, nbuffers=0, params=None)[ソース]

現在のデバイスを開きます.この関数は with 文の中で使うことを想定しています.

パラメータ:
  • mode (str) -- デバイスを開く際のモードを指定します.読み込みモードの 'r' ,書き込みモードの 'w' があります.また,読み込み専用モードの 'ro' と書き込み専用モードの 'wo' も用意されており,これらのモードではいずれかのモードでしか開けなくなりますが,環境によっては処理が軽くなることがあります.この関数では, 'r' モードの後に 'w' で開く 'rw' モードもサポートされています.

  • drivername (str, optional) -- 初期化するドライバー名を指定します.

  • callback (tuple, optional) -- コールバック関数などが含まれる, setcallback() に与える全ての引数を含むtupleを指定します.

  • deviceindex (int, optional) -- 選択したいオーディオデバイスのインデックスを指定します.

  • samprate (double, optional) -- 現在のデバイスのサンプルレートを設定します.

  • sampbit (int, optional) -- 現在のデバイスのビット/サンプルを設定します.

  • nchannels (int, optional) -- 現在のデバイスのチャネル数を設定します.

  • blockingmode (int, optional) -- 0 = ブロッキングモード(デフォルト),1 = ノンブロッキングモード.

  • buffersize (int, optional) -- 現在のデバイスのバッファサイズを設定します.

  • nbuffers (int, optional) -- 現在のデバイスのバッファ数を設定します.

  • params (dict, optional) -- 上記の samprate から nbuffers までの任意のパラメータが含まれ得るdictオブジェクトを指定します.

戻り値:

SpAudio クラスのインスタンスが返ります.

戻り値の型:

SpAudio

注釈

この関数はバージョン0.7.15にて導入されました.