6.1.5 SaveWavePCM

6.1.5.1 ノードの概要

時間領域の音声データをファイルに保存する.SaveRawPCM ノードとの違いは, 出力されるのがヘッダーを持つ WAVE 形式のファイルである点である.そのため, 例えば audacity や wavesurfer などで読み込む際に簡単である.また,ファイルを AudioStreamFromWave ノードで開きたい場合は,この SaveWavePCM で保存する.

6.1.5.2 必要なファイル

無し.

6.1.5.3 使用方法

どんなときに使うのか

SaveRawPCM ノードと同様に,分離音を聞いてみたい場合や,多チャンネルの 音声データ録音を行う場合に用いる.

典型的な接続例

使い方は,サンプリング周波数をパラメータとして指定する必要がある以外は SaveRawPCM ノードと同じである. 図6.116.12 の例において SaveRawPCM ノードを SaveWavePCM ノードに入れ替えて使うことができる.

6.1.5.4 ノードの入出力とプロパティ

Table 6.6: SaveWavePCM のパラメータ表

パラメータ名

デフォルト値

単位

説明

BASENAME

string 

sep_

 

保存するファイル名のフォーマット.

ADVANCE

int 

160

[pt]

ファイルに保存する音声波形の分析フレームのシフト長.

SAMPLING_RATE

int 

16000

[Hz]

サンプリング周波数.ヘッダを作成するために使用する.

BITS

string 

int16

[bit]

ファイルに保存する音声波形の量子化ビット数.

       

int16 または int24 を指定可.

INPUT_BITS

string 

as_BITS

[bit]

入力音声波形の量子化ビット数.

入力

INPUT

: Map<int, ObjectRef> または Matrix<float> 型.前者は分離音など,音源 ID と音声データの 構造体,後者は多チャネルの音声データ行列.

SOURCES

: Vector<ObjectRef> 型.音源定位結果 (Source 型の Vector )が入力される。なくても良い。

出力

OUTPUT

: Map<int, ObjectRef> または Matrix<float> 型.入力と同じものが出力される.

パラメータ

BASENAME

: string 型.デフォルトは sep_.通常の文字列の場合はファイル名のプレフィックス、 あるいはフォーマットを指定する.詳細は次のセクションを参照。

ADVANCE

: int 型.他のノードの ADVANCE の値と揃える必要がある.

SAMPLING_RATE

: int 型.他のノードの SAMPLING_RATE の値と揃える必要がある. この値はヘッダに書き込むために用いられるだけであり,このパラメータを変更してもA/D 変換 におけるサンプリングレートを変更することはできない.

BITS

: string 型.ファイルに保存する音声波形の量子化ビット数.int16 または int24 を指定可.

INPUT_BITS

: string 型.入力音声波形の量子化ビット数.int16 または int24 を指定可.as_BITSはBITSと同じ値を意味する.

6.1.5.5 ノードの詳細

保存されるファイルのフォーマット:

保存されるファイルは,ヘッダ情報を持つ WAVE ファイルとして記録される. したがって,ファイルを読む際には,特にサンプリング周波数とトラック数, 量子化ビット数を指定しなくてもよい.

また,入力の型によって書き出されるファイルは次のように異なる.

Matrix<float> 型

このとき書き出されるファイルは,入力の行の数だけチャネルを持った 多チャネル音声データを含む WAVE ファイルとなる.

Map<int, ObjectRef> 型

このとき書き出されるファイルは, BASENAME の後に ID 番号が付与されたファイル名で, 各 ID ごとにモノラル音声データが書き出される (1 つのファイルには 1 つの ID に対応する音声データのみ).

保存されるファイル名の決定方法:

ファイル名の決定方法は2種類ある。

  1. プレフィックス方式
    デフォルトの動作は、パラメータ BASENAME をプレフィックスとし、 そのあとに音源IDが接続され、最後に拡張子 .wav が接続される方式で名前が決定される。 たとえば、BASENAME の値が sep_ であれば、音源 ID が 0, 1, 2 の音声が入力されると、 ファイル名は sep_0.wav, sep_1.wav, sep_2.wav となる。

  2. フォーマット文字列方式 (HARK 2.3.1 以降)
    BASENAME に次の特別な文字列パターン{tag:format}がある場合、それにしたがってファイル名が決定される。 このフォーマットを利用すると、ファイル名にさまざまな情報を追加できる。

    tag には表 6.7 に示す 4 種類が使用できる。 音源 ID を表す srcid と実行時の時刻を表す date は制限なく利用できる。 方位角と仰角をあらわす azimuth と elevation を利用するためには、 SaveWavePCM に SOURCES 入力を追加し、音源定位結果を接続する必要がある。

    format はオプショナルなのでなくても良い。 この部分は、桁数の指定 (03d) に利用できる。フォーマットは printf などで使われる標準的なフォーマット。

    Table 6.7: tag リスト

    Tag

    Description

    Unit

    srcid

    音源 ID

    整数

    date

    実行時の時刻

    時刻文字列 (yyyyMMDD-HHmmss)

    azimuth

    方位角 (要SOURCES)

    degree(整数、小数点以下四捨五入)

    elevation

    仰角 (要SOURCES)

    degree(整数、小数点以下四捨五入)

    以下に使用例を示す。

    音源 ID をファイルの中頃に挿入する場合

     

    • FORMAT: wav_id_{srcid}_output

    • OUTPUT: wav_id_0_output.wav, wav_id_1_output.wav ...

    音源 ID の桁を揃える場合

     

    • FORMAT: wav_id_{srcid:03d}

    • OUTPUT: wav_id_000.wav, wav_id_001_output.wav ...

    azimuth をファイル名に含める場合

     

    • FORMAT: wav_az_{azimuth}

    • OUTPUT: wav_az_30.wav, wav_az_-10.wav ...

    だたし、この場合同じ角度の定位結果があれば上書きされるので注意。 srcid をファイル名に含めることでファイル名の一意性が確保できる。