1. chivox_vad_new

    函数原型：
        struct chivox_vad *chivox_vad_new(const char *cfg);

    函数说明：
        创建一个 chivox_vad 对象。

    输入参数：
        cfg:
                一个 JSON 对象的字符串。
                此 JSON 对象必须含有名为 "vad" 的子 JSON 对象。
                "vad" 子 JSON 对象必须含有名为 "res" 的子 JSON 字符串，字符串内
            容为 vad 资源的路径（ bin 文件）。可以是相对路径或者绝对路径。
                "vad" 子 JSON 对象可以含有名为 "speechLowSeek" 的子 JSON 数字，
            表示静音敏感时间，单位为帧数，小数部分会被忽略。如果不含有 
            "speechLowSeek" ，会采用 vad 资源的默认值。设置小于 0 的数字可能会导
            致部分 vad 资源初始化失败。部分 vad 资源此参数无效。对于不同版本的 
            vad 资源，修改资源的 "speechLowSeek" 配置或者 "rightMargin" 配置。
                "vad" 子 JSON 对象可以含有名为 "sampleRate" 的子 JSON 数字，表示
            输入音频的采样率，单位为每秒的采样数，小数部分会被忽略。如果不含有 
            "sampleRate" ，会采用 vad 资源的默认值。设置小于 0 的数字可能会导致
            部分 vad 资源初始化失败。

    返回值：
        成功时返回一个 chivox_vad 对象的指针。失败时返回 NULL 。
        错误原因可通过 get_last_chivox_vad_errno() 获得，或者通过
            chivox_vad_strerror(get_last_chivox_vad_errno()) 转换为可由人读取的
            文字信息。
        可能的错误原因有：
            CHIVOX_VAD_ERROR_INVALID_PARAMETER = 60000 ：
                cfg 参数是 NULL 。
            CHIVOX_VAD_ERROR_PARAMETER_NOT_JSON = 60001 ：
                cfg 不是 JSON 字符串；
            CHIVOX_VAD_ERROR_KERNEL_ERROR = 60008 ：
                内核错误， vad 资源初始化失败；
            CHIVOX_VAD_ERROR_INNER_ERROR = 60019 ：
                sdk 内部错误，通常是内存不足，也可能是其他系统资源不足；
            CHIVOX_VAD_ERROR_JSON_PARAMETER_ERROR = 60023 ：
                cfg 是一个含有子对象的 JSON 对象；
                或者， cfg 不含 "vad" 子 JSON 对象；
                或者， "vad" 子 JSON 对象不含 "res" 的子 JSON 字符串；
            CHIVOX_VAD_ERROR_RESOURCE_ERROR = 60024 ：
                vad 资源路径下没有 vad 资源；
                或者，有 vad 资源但是没有读取资源的权限。

================================================================================

2. chivox_vad_delete

    函数原型：
        int chivox_vad_delete(struct chivox_vad *vad);

    函数说明：
        删除一个已创建的 chivox_vad 对象。

    输入参数：
        vad:
            由 chivox_vad_new 产生的 chivox_vad 对象。
            必须是非空的，且未删除过的 chivox_vad 对象。

    返回值：
        成功时返回 0 ，失败时返回非 0 。
        可能的错误原因有：
            CHIVOX_VAD_ERROR_INVALID_PARAMETER = 60000 ：
                vad 参数是 NULL 。

================================================================================

3. chivox_vad_start

    函数原型：
        int chivox_vad_start(struct chivox_vad *vad, char *param);

    函数说明：
        开始一次 vad 静音判定。

    输入参数：
        vad:
            由 chivox_vad_new 产生的 chivox_vad 对象。
            必须是非空的，且未删除过的 chivox_vad 对象。
            必须尚未开始一次 vad ，或者上一次 vad 已经结束。
        param:
                一个 JSON 对象的字符串，或者 NULL 。
                此 JSON 对象可以含有名为 "vad" 的子 JSON 对象。
                "vad" 子 JSON 对象可以含有名为 "refDuration" 的子 JSON 数字，表
            示输入音频的最短有效时长，单位为秒。可以含有小数。在输入音频的总计时
            间小于此时间时，音频的静音状态不会变为"已结束"。如果不含有 
            "refDuration" ，或者设置小于 0 的数字，则视同设置值为 0 。
                如果 param 为 NULL ，则视同以上所有值未设置。

    返回值：
        成功时返回 0 ，失败时返回非 0 。
        可能的错误原因有：
            CHIVOX_VAD_ERROR_INVALID_PARAMETER = 60000 ：
                vad 参数是 NULL ；
            CHIVOX_VAD_ERROR_KERNEL_ERROR = 60008 ：
                内核错误；
            CHIVOX_VAD_ERROR_WRONG_ORDER = 60011 ：
                已经开始一次 vad ，且尚未结束的情况下调用。

================================================================================

4. chivox_vad_feed

    函数原型：
        int chivox_vad_feed(struct chivox_vad *vad, const void *data, int size);

    函数说明：
        在一次 vad 的进行中，向 chivox_vad 对象请求判断一段音频的静音与否。

    输入参数：
        vad:
            由 chivox_vad_new 产生的 chivox_vad 对象。
            必须是非空的，且未删除过的 chivox_vad 对象。
            必须已经开始一次 vad ，且尚未结束。

    返回值：
        成功时返回 0 ，失败时返回非 0 。
        可能的错误原因有：
            CHIVOX_VAD_ERROR_INVALID_PARAMETER = 60000 ：
                vad 参数是 NULL ，或者 data 参数为 NULL ， 或者 size 小于或等于 
                0 ；
            CHIVOX_VAD_ERROR_KERNEL_ERROR = 60008 ：
                内核错误；
            CHIVOX_VAD_ERROR_WRONG_ORDER = 60011 ：
                尚未开始一次 vad ，或者上一次 vad 已经结束。

================================================================================

5. chivox_vad_stop

    函数原型：
        int chivox_vad_stop(struct chivox_vad *vad);

    函数说明：
        结束一次 vad 的进行。

    输入参数：
        vad:
            由 chivox_vad_new 产生的 chivox_vad 对象。
            必须是非空的，且未删除过的 chivox_vad 对象。
            必须已经开始一次 vad ，且尚未结束。

    返回值：
        成功时返回 0 ，失败时返回非 0 。
        可能的错误原因有：
            CHIVOX_VAD_ERROR_INVALID_PARAMETER = 60000 ：
                vad 参数是 NULL ；
            CHIVOX_VAD_ERROR_KERNEL_ERROR = 60008 ：
                内核错误；
            CHIVOX_VAD_ERROR_WRONG_ORDER = 60011 ：
                尚未开始一次 vad ，或者上一次 vad 已经结束。

================================================================================

6. chivox_vad_state

    函数原型：
        int chivox_vad_state(struct chivox_vad *vad);

    函数说明：
        获取最近一次 chivox_vad_feed 之后，音频整体的静音状态。

    输入参数：
        vad:
            由 chivox_vad_new 产生的 chivox_vad 对象。
            必须是非空的，且未删除过的 chivox_vad 对象。
            必须已经开始一次 vad ，且尚未结束。

    返回值：
        chivox_vad_state_error 或者 -1
            调用发生错误。
        chivox_vad_state_sil 或者 0
            表示录音从开始到最近一次 chivox_vad_feed 输入的音频数据，尚未确认到
            有语音。
        chivox_vad_state_speech 或者 1
            表示录音从开始到最近一次 chivox_vad_feed 输入的音频数据，确认到有语
            音，并且尚未确认到语音结束。
        chivox_vad_state_end 或者 2
            表示录音从开始到最近一次 chivox_vad_feed 输入的音频数据，确认到有语
            音，然后确认到语音已经结束。
        错误原因可通过 get_last_chivox_vad_errno() 获得，或者通过
            chivox_vad_strerror(get_last_chivox_vad_errno()) 转换为可由人读取的
            文字信息。
        可能的错误原因有：
            CHIVOX_VAD_ERROR_INVALID_PARAMETER = 60000 ：
                vad 参数是 NULL ；
            CHIVOX_VAD_ERROR_WRONG_ORDER = 60011 ：
                尚未开始一次 vad ，或者上一次 vad 已经结束；
            CHIVOX_VAD_ERROR_CURRENT_NO_RESULT = 60025 ：
                还没有 feed 过，当前没有结果。

================================================================================

7. chivox_vad_sound_intensity

    函数原型：
        float chivox_vad_sound_intensity(struct chivox_vad *vad);

    函数说明：
        获取最近一次 chivox_vad_feed 输入的音频数据的声音强度。

    输入参数：
        vad:
            由 chivox_vad_new 产生的 chivox_vad 对象。
            必须是非空的，且未删除过的 chivox_vad 对象。
            必须已经开始一次 vad ，且尚未结束。

    返回值：
            错误时返回小于 0 的值。
            最近一次 chivox_vad_feed 输入的音频数据的声音强度，最小为 0 ，最大为 
        100 ，有小数。
            如果最近一次音频时间过短，可能会导致声音强度不准确。通常 10 毫秒以上
        较准确， 50 毫秒以上可以认为很准确。
            错误原因可通过 get_last_chivox_vad_errno() 获得，或者通过
        chivox_vad_strerror(get_last_chivox_vad_errno()) 转换为可由人读取的文字
        信息。
            可能的错误原因有：
            CHIVOX_VAD_ERROR_INVALID_PARAMETER = 60000 ：
                vad 参数是 NULL ；
            CHIVOX_VAD_ERROR_WRONG_ORDER = 60011 ：
                尚未开始一次 vad ，或者上一次 vad 已经结束；
            CHIVOX_VAD_ERROR_CURRENT_NO_RESULT = 60025 ：
                还没有 feed 过，当前没有结果。

================================================================================

8. get_last_chivox_vad_errno

    函数原型：
        int get_last_chivox_vad_errno()；

    函数说明：
        返回最近一次调用 chivox_vad_new 、 chivox_vad_delete 、 
    chivox_vad_start 、 chivox_vad_feed 、 chivox_vad_stop 、 
    chivox_vad_state 、 chivox_vad_sound_intensity 发生的错误码。
        如果最近一次调用以上函数没有发生错误，会返回 CHIVOX_VAD_ERROR_NO_ERROR 
    = 0 。

    返回值：
        目前可能有以下返回值：
            CHIVOX_VAD_ERROR_NO_ERROR = 0 ：
                没有错误；
            CHIVOX_VAD_ERROR_UNKNOWN = 1 ：
                尚无法分类的错误；
            CHIVOX_VAD_ERROR_INVALID_PARAMETER = 60000 ：
                传入的直接参数不合法；
            CHIVOX_VAD_ERROR_PARAMETER_NOT_JSON = 60001 ：
                需要传入 JSON 字符串的参数不是 JSON ；
            CHIVOX_VAD_ERROR_KERNEL_ERROR = 60008 ：
                内核错误；
            CHIVOX_VAD_ERROR_WRONG_ORDER = 60011 ：
                调用顺序错误，或者此时暂时不能调用，应先调用其他函数；
            CHIVOX_VAD_ERROR_INNER_ERROR = 60019 ：
                sdk 内部错误，通常是内存不足，也可能是其他系统资源不足；
            CHIVOX_VAD_ERROR_JSON_PARAMETER_ERROR = 60023 ：
                JSON 参数中的必须项未填写或者类型错误；
            CHIVOX_VAD_ERROR_RESOURCE_ERROR = 60024 ：
                所写的资源不存在，或者没有权限；
            CHIVOX_VAD_ERROR_CURRENT_NO_RESULT = 60025 ：
                当前没有结果，进行 feed 以后再尝试获取。
        以上常量值的意义和通用 SDK 的错误码相对应，参考：
        http://confluence.chivox.com/pages/viewpage.action?pageId=5505402 。

================================================================================

9. chivox_vad_strerror

    函数原型：
        const char *chivox_vad_strerror(int chivox_vad_errno);

    函数说明：
            返回某个错误码。原始文本不可修改，不用释放。需要修改时可以 strcpy 等方式
        拷贝一份再修改。
            受编码限制，只有英文。 C 语言程序应避免代码中直接使用中文。

    输入参数：
        chivox_vad_errno：
                一个错误码。可以是某个函数的返回值，也可以直接输入
            CHIVOX_VAD_ERROR_NO_ERROR 等已定义的错误常量值。

    返回值：
        一段文字。
