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)
- class spaudio.SpAudio(drivername=None)[ソース]
ベースクラス:
object
オーディオ入出力のためのクラスです.
- パラメータ:
drivername (str) -- 初期化するドライバー名を指定します.
- 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
- 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'
,'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
- 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
注釈
キーワード引数の offset と length はバージョン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
注釈
キーワード引数の offset と length はバージョン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にて導入されました.
- selectdevice(deviceindex)[ソース]
指定されたインデックスと対応するオーディオデバイスを選択します.
- パラメータ:
deviceindex (int) -- オーディオデバイスのインデックスを指定します.
- 例外:
ValueError -- deviceindex がデバイス数以上の場合に発生します.
DriverError -- オーディオデバイスが選択できない場合に発生します.
- setblockingmode(mode)[ソース]
現在のデバイスのブロッキングモードを設定します.
- パラメータ:
mode (int) -- 0 = ブロッキングモード(デフォルト),1 = ノンブロッキングモード.
- setcallback(calltype, func, *args)[ソース]
コールバック関数を設定します.
- パラメータ:
calltype (int) -- コールバックタイプのコンビネーションで指定します.現在は,
OUTPUT_POSITION_CALLBACK
とOUTPUT_BUFFER_CALLBACK
がサポートされています.func (callable) -- コールバック関数を指定します.コールバック関数は,
callbacksignature()
で説明されるシグネチャを持つ必要があります.*args -- コールバック関数に渡す可変長の引数リストを指定します.
- 例外:
DriverError -- コールバック関数が設定できなかった時に発生します.
- setparams(params)[ソース]
サポートされている全てのパラメータを,dictオブジェクトもしくは namedtupleオブジェクトの形でデバイスに設定します.
- パラメータ:
params (dict) --
'nchannels'
,'sampbit'
,'samprate'
,'blockingmode'
,'buffersize'
,'nbuffers'
のキーを持つ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, optional) -- 書き込み前のデータに乗じられる重み係数を指定します.
offset (int, optional) -- オプションの配列に対するオフセットを指定します.
length (int, optional) -- オプションの配列に対する書き込み長を指定します.
- 戻り値:
成功した場合には書き込まれたサイズが返り,失敗した場合には-1が返ります.
- 戻り値の型:
int
注釈
キーワード引数の offset と length はバージョン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
注釈
キーワード引数の offset と length はバージョン0.7.15で導入されました.
- spaudio.callbacksignature(audio, calltype, cbdata, args)[ソース]
setcallback()
で指定するコールバック関数のシグネチャです.- パラメータ:
calltype (int) -- コールバックタイプです.
OUTPUT_POSITION_CALLBACK
かOUTPUT_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.getdrivername(index)[ソース]
指定されたインデックスと対応するオーディオドライバーの名前を取得します.
- パラメータ:
index (int) -- オーディオドライバーのインデックスを指定します.
- 戻り値:
ドライバー名が含まれる文字列が返ります.
- 戻り値の型:
string
- 例外:
ValueError -- index がドライバー数以上の場合に発生します.
- 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
クラスのインスタンスが返ります.- 戻り値の型:
注釈
この関数はバージョン0.7.15にて導入されました.