Sourceによる音源情報の管理
==========================

HARK音響ライブラリは、音源に関する情報を管理するクラスとして、 ``Source`` を定義する。

以下は C++ 版のソースコードの抜粋であるが、ここでは、HARK音響ライブラリの基礎となった HARK における同名クラスの定義との差分について説明する。
本ドキュメントに記載のない部分については、`HARK Document <https://www.hark.jp/document/hark-document-ja/>`_ を参照されたい。

.. code-block:: C++

    namespace hark
    {
        class Source: public object
        {
            // ...(略)...
        public:
            int id;
            int sub_id;
            int mic_id;

            // ...(略)...
        };
    }


``Source`` は、音源を識別するID値として、 ``id`` が定義されている。処理の結果、音源が出現したと判断されるごとに固有の値が付与される。
その後、各ノードでは、同一の ``id`` を有する音声データや特徴データ等を、同一の音源に由来するものとして処理する。

HARK音響ライブラリでは、これに加えて、 ``sub_id`` および ``mic_id`` の2つのID値が追加される。

``sub_id`` は、ひとつの ``id`` に対応付けられた音源が長時間継続して存在している場合に、あらかじめ指定した長さごとに更新される値として付与される。
具体的には、 ``VADZC`` および ``VADPyAnnote`` の各ノードのパラメータ ``SPLIT_PERIOD`` に基づいて値が更新されることとなる。

``mic_id`` は、音源がどのマイクロホンを通じて得られたものであるかを識別する、0オリジンでインクリメントされるID値である。
