6.1.6 SaveWavePCM2

6.1.6.1 ノードの概要

時間領域の音声データをファイルに保存する.SaveRawPCM ノードとの違いは, 出力されるのがヘッダーを持つ WAVE 形式のファイルである点である.そのため, 例えば audacity や wavesurfer などで読み込む際に簡単である.また,ファイルを AudioStreamFromWave ノードで開きたい場合は,この SaveWavePCM2  で保存する. SaveWavePCM ノードとの違いは,入力端子 ENABLE でファイルの保存の有無を任意のタイミングで制御出来ることである. また,ファイル名にタイムスタンプが挿入されるためファイル名の一意性が常に確保されることである. なお入力端子 ENABLE は未接続だと falseとして認識されるためファイルが保存されないことに注意されたい. SaveWavePCM の置き換えとして常にファイル保存を行いたい場合は Constant ノードを trueに設定して接続すると良い.

6.1.6.2 必要なファイル

無し.

6.1.6.3 使用方法

どんなときに使うのか

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

典型的な接続例

使い方は,サンプリング周波数をパラメータとして指定する必要がある以外は SaveRawPCM ノードと同じである. 図6.116.12 の例において SaveRawPCM ノードを SaveWavePCM2  ノードに入れ替えて使うことができる. 注意点としてENABLE端子に Constant ノードで trueを設定して接続しておく必要がある. 動的にファイル保存の有無を制御したい場合は HARK-Python などを用いて外部から truefalseを制御できるようにする必要がある.

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

Table 6.8: SaveWavePCM2  のパラメータ表

パラメータ名

デフォルト値

単位

説明

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 )が入力される。なくても良い。

ENABLE

: bool 型.本入力端子が1もしくは真の時にのみファイルが保存される. SaveWavePCM との相違点.

出力

OUTPUT

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

OUTPUT_FILE_NAME

: string 型.入力が Matrix<float> 型の場合に現在保存しているファイル名が出力される.入力が Map<int, ObjectRef> 型の場合は空文字列である. SaveWavePCM との相違点.

OUTPUT_FRAME_COUNT

: int 型.入力が Matrix<float> 型の場合に保存しているファイルに含まれるフレーム数が出力される.入力が Map<int, ObjectRef> 型の場合はから不定値(通常0であるが未初期化のため値は保証しない)である. SaveWavePCM との相違点.

パラメータ

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.6.5 ノードの詳細

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

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

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

Matrix<float> 型

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

Map<int, ObjectRef> 型

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

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

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

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

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

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

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

    Table 6.9: 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.20210101.120001.987654.wav, wav_id_1_output.20210101.120003.123456.wav ...

    音源 ID の桁を揃える場合

     

    • FORMAT: wav_id_{srcid:03d}

    • OUTPUT: wav_id_000.20210101.120001.987654.wav, wav_id_001.20210101.120003.123456.wav ...

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

     

    • FORMAT: wav_az_{azimuth}

    • OUTPUT: wav_az_30.20210101.120001.987654.wav, wav_az_-10.20210101.120003.123456.wav ...

    この場合でも SaveWavePCM と異なり、同じ時間に同じ角度の定位結果となる事は同一音源でない限り無いため常にファイル名の一意性が確保できる。