release esp-sr v1.9.4

This commit is contained in:
xysun 2024-11-05 11:24:55 +08:00
parent 1714e211a9
commit b6a9615ec9
31 changed files with 71 additions and 59 deletions

View File

@ -99,8 +99,6 @@ before_script:
artifacts:
when: always
paths:
- "**/build*/size.json"
- "**/build*/build_log.txt"
- "**/build*/*.bin"
# upload to s3 server to save the artifacts size
- "**/build*/*.map"

View File

@ -4,6 +4,10 @@
- Available storage is less than the remaining flash space on IDF v5.0.
If you can not map model partition successfully, please check the left free storage by `spi_flash_mmap_get_free_pages(ESP_PARTITION_MMAP_DATA)` or update IDF to v5.1 or later.
## 1.9.4
- Fix bugs when using C++ to compile
- Add more new wake words
## 1.9.3
- Fix nsnet2 crash
- Add esp32p4 ci test

View File

@ -1,4 +1,4 @@
version: "1.9.3"
version: "1.9.4"
description: esp_sr provides basic algorithms for Speech Recognition applications
url: https://github.com/espressif/esp-sr
dependencies:

View File

@ -113,10 +113,12 @@ typedef struct {
.memory_alloc_mode = AFE_MEMORY_ALLOC_INTERNAL_PSRAM_BALANCE, \
.afe_linear_gain = 1.0, \
.agc_mode = AFE_MN_PEAK_AGC_MODE_2, \
.pcm_config.total_ch_num = 2, \
.pcm_config.mic_num = 1, \
.pcm_config.ref_num = 1, \
.pcm_config.sample_rate = 16000, \
.pcm_config = { \
.total_ch_num = 2, \
.mic_num = 1, \
.ref_num = 1, \
.sample_rate = 16000, \
}, \
.debug_init = false, \
.debug_hook = {{AFE_DEBUG_HOOK_MASE_TASK_IN, NULL}, {AFE_DEBUG_HOOK_FETCH_TASK_IN, NULL}}, \
.afe_ns_mode = NS_MODE_SSP, \
@ -142,10 +144,12 @@ typedef struct {
.memory_alloc_mode = AFE_MEMORY_ALLOC_MORE_PSRAM, \
.afe_linear_gain = 1.0, \
.agc_mode = AFE_MN_PEAK_AGC_MODE_2, \
.pcm_config.total_ch_num = 3, \
.pcm_config.mic_num = 2, \
.pcm_config.ref_num = 1, \
.pcm_config.sample_rate = 16000, \
.pcm_config = { \
.total_ch_num = 3, \
.mic_num = 2, \
.ref_num = 1, \
.sample_rate = 16000, \
}, \
.debug_init = false, \
.debug_hook = {{AFE_DEBUG_HOOK_MASE_TASK_IN, NULL}, {AFE_DEBUG_HOOK_FETCH_TASK_IN, NULL}}, \
.afe_ns_mode = NS_MODE_SSP, \
@ -155,4 +159,4 @@ typedef struct {
#ifdef __cplusplus
}
#endif
#endif

View File

@ -198,7 +198,7 @@ typedef void (*esp_mn_iface_op_print_active_speech_commands)(model_iface_data_t
* @param model_data The model object to query
* @param str The input string
*/
typedef int (*esp_mn_iface_op_check_speech_command)(model_iface_data_t *model_data, char *str);
typedef int (*esp_mn_iface_op_check_speech_command)(model_iface_data_t *model_data, const char *str);
typedef struct {
esp_mn_iface_op_create_t create;

View File

@ -15,6 +15,6 @@ void flite_g2p_result_print_string(flite_g2p_result *result, int map_phonemes);
char *flite_g2p_result_get_string(flite_g2p_result *result, int map_phonemes);
char *flite_g2p(char *graphemes, int map_phonemes);
char *flite_g2p(const char *graphemes, int map_phonemes);
#endif

View File

@ -115,10 +115,12 @@ typedef struct {
.memory_alloc_mode = AFE_MEMORY_ALLOC_INTERNAL_PSRAM_BALANCE, \
.afe_linear_gain = 1.0, \
.agc_mode = AFE_MN_PEAK_AGC_MODE_2, \
.pcm_config.total_ch_num = 2, \
.pcm_config.mic_num = 1, \
.pcm_config.ref_num = 1, \
.pcm_config.sample_rate = 16000, \
.pcm_config = { \
.total_ch_num = 2, \
.mic_num = 1, \
.ref_num = 1, \
.sample_rate = 16000, \
}, \
.debug_init = false, \
.debug_hook = {{AFE_DEBUG_HOOK_MASE_TASK_IN, NULL}, {AFE_DEBUG_HOOK_FETCH_TASK_IN, NULL}}, \
.afe_ns_mode = NS_MODE_SSP, \
@ -145,10 +147,12 @@ typedef struct {
.memory_alloc_mode = AFE_MEMORY_ALLOC_MORE_PSRAM, \
.afe_linear_gain = 1.0, \
.agc_mode = AFE_MN_PEAK_AGC_MODE_2, \
.pcm_config.total_ch_num = 2, \
.pcm_config.mic_num = 1, \
.pcm_config.ref_num = 1, \
.pcm_config.sample_rate = 16000, \
.pcm_config = { \
.total_ch_num = 2, \
.mic_num = 1, \
.ref_num = 1, \
.sample_rate = 16000, \
}, \
.debug_init = false, \
.debug_hook = {{AFE_DEBUG_HOOK_MASE_TASK_IN, NULL}, {AFE_DEBUG_HOOK_FETCH_TASK_IN, NULL}}, \
.afe_ns_mode = NS_MODE_SSP, \
@ -175,10 +179,12 @@ typedef struct {
.memory_alloc_mode = AFE_MEMORY_ALLOC_MORE_PSRAM, \
.afe_linear_gain = 1.0, \
.agc_mode = AFE_MN_PEAK_AGC_MODE_2, \
.pcm_config.total_ch_num = 3, \
.pcm_config.mic_num = 2, \
.pcm_config.ref_num = 1, \
.pcm_config.sample_rate = 16000, \
.pcm_config = { \
.total_ch_num = 3, \
.mic_num = 2, \
.ref_num = 1, \
.sample_rate = 16000, \
}, \
.debug_init = false, \
.debug_hook = {{AFE_DEBUG_HOOK_MASE_TASK_IN, NULL}, {AFE_DEBUG_HOOK_FETCH_TASK_IN, NULL}}, \
.afe_ns_mode = NS_MODE_SSP, \

View File

@ -112,7 +112,7 @@ typedef afe_fetch_result_t* (*esp_afe_sr_iface_op_fetch_t)(esp_afe_sr_data_t *af
* @brief reset ringbuf of AFE.
*
* @param afe The AFE_SR object to query
* @return -1: fail, 0: success
* @return -1: fail, 1: success
*/
typedef int (*esp_afe_sr_iface_op_reset_buffer_t)(esp_afe_sr_data_t *afe);
@ -122,7 +122,7 @@ typedef int (*esp_afe_sr_iface_op_reset_buffer_t)(esp_afe_sr_data_t *afe);
*
* @param afe The AFE_SR object to query
* @param wakenet_word The wakenet word, should be DEFAULT_WAKE_WORD or EXTRA_WAKE_WORD
* @return 0: fail, 1: success
* @return -1: fail, 1: success
*/
typedef int (*esp_afe_sr_iface_op_set_wakenet_t)(esp_afe_sr_data_t *afe, char* model_name);
@ -130,7 +130,7 @@ typedef int (*esp_afe_sr_iface_op_set_wakenet_t)(esp_afe_sr_data_t *afe, char* m
* @brief Disable wakenet model.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_disable_wakenet_t)(esp_afe_sr_data_t *afe);
@ -138,7 +138,7 @@ typedef int (*esp_afe_sr_iface_op_disable_wakenet_t)(esp_afe_sr_data_t *afe);
* @brief Enable wakenet model.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_enable_wakenet_t)(esp_afe_sr_data_t *afe);
@ -146,7 +146,7 @@ typedef int (*esp_afe_sr_iface_op_enable_wakenet_t)(esp_afe_sr_data_t *afe);
* @brief Disable AEC algorithm.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_disable_aec_t)(esp_afe_sr_data_t *afe);
@ -154,7 +154,7 @@ typedef int (*esp_afe_sr_iface_op_disable_aec_t)(esp_afe_sr_data_t *afe);
* @brief Enable AEC algorithm.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_enable_aec_t)(esp_afe_sr_data_t *afe);
@ -162,7 +162,7 @@ typedef int (*esp_afe_sr_iface_op_enable_aec_t)(esp_afe_sr_data_t *afe);
* @brief Disable SE algorithm.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_disable_se_t)(esp_afe_sr_data_t *afe);
@ -170,7 +170,7 @@ typedef int (*esp_afe_sr_iface_op_disable_se_t)(esp_afe_sr_data_t *afe);
* @brief Enable SE algorithm.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_enable_se_t)(esp_afe_sr_data_t *afe);

View File

@ -198,7 +198,7 @@ typedef void (*esp_mn_iface_op_print_active_speech_commands)(model_iface_data_t
* @param model_data The model object to query
* @param str The input string
*/
typedef int (*esp_mn_iface_op_check_speech_command)(model_iface_data_t *model_data, char *str);
typedef int (*esp_mn_iface_op_check_speech_command)(model_iface_data_t *model_data, const char *str);
typedef struct {
esp_mn_iface_op_create_t create;

View File

@ -9,12 +9,12 @@ typedef struct {
void flite_g2p_result_free(flite_g2p_result *result);
flite_g2p_result *flite_g2p_get_result(char *grapheme);
flite_g2p_result *flite_g2p_get_result(const char *grapheme);
void flite_g2p_result_print_string(flite_g2p_result *result, int map_phonemes);
char *flite_g2p_result_get_string(flite_g2p_result *result, int map_phonemes);
char *flite_g2p(char *graphemes, int map_phonemes);
char *flite_g2p(const char *graphemes, int map_phonemes);
#endif

View File

@ -112,7 +112,7 @@ typedef afe_fetch_result_t* (*esp_afe_sr_iface_op_fetch_t)(esp_afe_sr_data_t *af
* @brief reset ringbuf of AFE.
*
* @param afe The AFE_SR object to query
* @return -1: fail, 0: success
* @return -1: fail, 1: success
*/
typedef int (*esp_afe_sr_iface_op_reset_buffer_t)(esp_afe_sr_data_t *afe);
@ -122,7 +122,7 @@ typedef int (*esp_afe_sr_iface_op_reset_buffer_t)(esp_afe_sr_data_t *afe);
*
* @param afe The AFE_SR object to query
* @param wakenet_word The wakenet word, should be DEFAULT_WAKE_WORD or EXTRA_WAKE_WORD
* @return 0: fail, 1: success
* @return -1: fail, 1: success
*/
typedef int (*esp_afe_sr_iface_op_set_wakenet_t)(esp_afe_sr_data_t *afe, char* model_name);
@ -130,7 +130,7 @@ typedef int (*esp_afe_sr_iface_op_set_wakenet_t)(esp_afe_sr_data_t *afe, char* m
* @brief Disable wakenet model.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_disable_wakenet_t)(esp_afe_sr_data_t *afe);
@ -138,7 +138,7 @@ typedef int (*esp_afe_sr_iface_op_disable_wakenet_t)(esp_afe_sr_data_t *afe);
* @brief Enable wakenet model.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_enable_wakenet_t)(esp_afe_sr_data_t *afe);
@ -146,7 +146,7 @@ typedef int (*esp_afe_sr_iface_op_enable_wakenet_t)(esp_afe_sr_data_t *afe);
* @brief Disable AEC algorithm.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_disable_aec_t)(esp_afe_sr_data_t *afe);
@ -154,7 +154,7 @@ typedef int (*esp_afe_sr_iface_op_disable_aec_t)(esp_afe_sr_data_t *afe);
* @brief Enable AEC algorithm.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_enable_aec_t)(esp_afe_sr_data_t *afe);
@ -162,7 +162,7 @@ typedef int (*esp_afe_sr_iface_op_enable_aec_t)(esp_afe_sr_data_t *afe);
* @brief Disable SE algorithm.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_disable_se_t)(esp_afe_sr_data_t *afe);
@ -170,7 +170,7 @@ typedef int (*esp_afe_sr_iface_op_disable_se_t)(esp_afe_sr_data_t *afe);
* @brief Enable SE algorithm.
*
* @param afe The AFE_SR object to query
* @return 0: fail, 1: success
* @return -1: fail, 0: disabled, 1: enabled
*/
typedef int (*esp_afe_sr_iface_op_enable_se_t)(esp_afe_sr_data_t *afe);

View File

@ -198,7 +198,7 @@ typedef void (*esp_mn_iface_op_print_active_speech_commands)(model_iface_data_t
* @param model_data The model object to query
* @param str The input string
*/
typedef int (*esp_mn_iface_op_check_speech_command)(model_iface_data_t *model_data, char *str);
typedef int (*esp_mn_iface_op_check_speech_command)(model_iface_data_t *model_data, const char *str);
typedef struct {
esp_mn_iface_op_create_t create;

View File

@ -9,12 +9,12 @@ typedef struct {
void flite_g2p_result_free(flite_g2p_result *result);
flite_g2p_result *flite_g2p_get_result(char *grapheme);
flite_g2p_result *flite_g2p_get_result(const char *grapheme);
void flite_g2p_result_print_string(flite_g2p_result *result, int map_phonemes);
char *flite_g2p_result_get_string(flite_g2p_result *result, int map_phonemes);
char *flite_g2p(char *graphemes, int map_phonemes);
char *flite_g2p(const char *graphemes, int map_phonemes);
#endif

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -79,7 +79,7 @@ esp_err_t esp_mn_commands_clear(void)
return ESP_OK;
}
esp_mn_node_t *esp_mn_command_search(char *string)
esp_mn_node_t *esp_mn_command_search(const char *string)
{
esp_mn_node_t *temp = esp_mn_root;
if(NULL == esp_mn_root) {
@ -95,7 +95,7 @@ esp_mn_node_t *esp_mn_command_search(char *string)
return NULL;
}
esp_err_t esp_mn_commands_add(int command_id, char *string)
esp_err_t esp_mn_commands_add(int command_id, const char *string)
{
if (NULL == esp_mn_root || esp_mn_model_handle == NULL || esp_mn_model_data == NULL) {
ESP_LOGE(TAG, "Please create mn model first.\n");
@ -156,7 +156,7 @@ esp_err_t esp_mn_commands_add(int command_id, char *string)
return ESP_OK;
}
esp_err_t esp_mn_commands_phoneme_add(int command_id, char *string, char *phonemes)
esp_err_t esp_mn_commands_phoneme_add(int command_id, const char *string, const char *phonemes)
{
if (NULL == esp_mn_root || esp_mn_model_handle == NULL || esp_mn_model_data == NULL) {
ESP_LOGE(TAG, "Please create mn model first.\n");
@ -214,7 +214,7 @@ esp_err_t esp_mn_commands_phoneme_add(int command_id, char *string, char *phonem
return ESP_OK;
}
esp_err_t esp_mn_commands_modify(char *old_string, char *new_string)
esp_err_t esp_mn_commands_modify(const char *old_string, const char *new_string)
{
#ifdef CONFIG_SR_MN_EN_MULTINET7_QUANT
char *phonemes = flite_g2p(new_string, 1);
@ -257,7 +257,7 @@ esp_err_t esp_mn_commands_modify(char *old_string, char *new_string)
return ESP_OK;
}
esp_err_t esp_mn_commands_remove(char *string)
esp_err_t esp_mn_commands_remove(const char *string)
{
esp_mn_node_t *temp = esp_mn_root;
ESP_RETURN_ON_FALSE(NULL != esp_mn_root, ESP_ERR_INVALID_STATE, TAG, "The mn commands is not initialized");
@ -374,7 +374,7 @@ void esp_mn_active_commands_print(void)
ESP_LOGI(TAG, "---------------------------------------------------------\n");
}
esp_mn_phrase_t *esp_mn_phrase_alloc(int command_id, char *string)
esp_mn_phrase_t *esp_mn_phrase_alloc(int command_id, const char *string)
{
int string_len = strlen(string);

View File

@ -57,7 +57,7 @@ esp_err_t esp_mn_commands_free(void);
* - ESP_OK Success
* - ESP_ERR_INVALID_STATE Fail
*/
esp_err_t esp_mn_commands_add(int command_id, char *string);
esp_err_t esp_mn_commands_add(int command_id, const char *string);
/**
* @brief Add one speech commands with command string, command phonemes and command ID
@ -71,7 +71,7 @@ esp_err_t esp_mn_commands_add(int command_id, char *string);
* - ESP_OK Success
* - ESP_ERR_INVALID_STATE Fail
*/
esp_err_t esp_mn_commands_phoneme_add(int command_id, char *string, char *phonemes);
esp_err_t esp_mn_commands_phoneme_add(int command_id, const char *string, const char *phonemes);
/**
* @brief Modify one speech commands with new command string
@ -83,7 +83,7 @@ esp_err_t esp_mn_commands_phoneme_add(int command_id, char *string, char *phonem
* - ESP_OK Success
* - ESP_ERR_INVALID_STATE Fail
*/
esp_err_t esp_mn_commands_modify(char *old_string, char *new_string);
esp_err_t esp_mn_commands_modify(const char *old_string, const char *new_string);
/**
* @brief Remove one speech commands by command string
@ -94,7 +94,7 @@ esp_err_t esp_mn_commands_modify(char *old_string, char *new_string);
* - ESP_OK Success
* - ESP_ERR_INVALID_STATE Fail
*/
esp_err_t esp_mn_commands_remove(char *string);
esp_err_t esp_mn_commands_remove(const char *string);
/**
* @brief Clear all speech commands in linked list
@ -157,7 +157,7 @@ esp_mn_error_t *esp_mn_commands_update();
*
* @return the pointer of esp_mn_phrase_t
*/
esp_mn_phrase_t *esp_mn_phrase_alloc(int command_id, char *string);
esp_mn_phrase_t *esp_mn_phrase_alloc(int command_id, const char *string);
/**
* @brief Free esp_mn_phrase_t pointer.