espressif / esp-adf

Espressif Audio Development Framework
Other
1.54k stars 679 forks source link

如何不通过menuconfig修改命令词? (AUD-3623) #766

Closed Zhengqinze05 closed 2 years ago

Zhengqinze05 commented 2 years ago

如在WWE工程上,添加或删除命令词,不通过menuconfig和Kconfig,直接在代码中对命令词修改,ESP是否支持这种操作

JosephTang commented 2 years ago

@Zhengqinze05 你好,目前的ADF中还没有提供修改的代码,但是recorder所调用的esp-sr中,是有可以修改命令词的接口的。

可以在recorder_sr.c中添加如下函数,并在recorder_sr.h中添加声明后使用。

esp_err_t recorder_sr_reset_speech_cmd(recorder_sr_handle_t handle, char *command_str, char *err_phrase_id)
{
#ifdef CONFIG_USE_MULTINET
    AUDIO_CHECK(TAG, handle, return ESP_FAIL, "Handle is NULL");
    recorder_sr_t *recorder_sr = (recorder_sr_t *)handle;

    multinet->reset(recorder_sr->mn_handle, command_str, err_phrase_id);

    return ESP_OK;
#else
    ESP_LOGW(TAG, "Multinet is not enabled");
    return ESP_FAIL;
#endif
}

该接口使用实例:

    char err[200];
    char *ch_commands_str = "da kai dian deng,kai dian deng;guan bi dian deng,guan dian deng;guan deng;";
    recorder_sr_reset_speech_cmd(cfg.sr_handle, ch_commands_str, err);

其中ch_commands_str 的格式请参阅esp-sr 中reset的说明