Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于将esp-box的aec算法启用 (AIS-1321) #112

Closed
ZorkyZorky opened this issue Aug 18, 2023 · 8 comments
Closed

关于将esp-box的aec算法启用 (AIS-1321) #112

ZorkyZorky opened this issue Aug 18, 2023 · 8 comments

Comments

@ZorkyZorky
Copy link

esp-box没有引入aec算法,参照esp-skainet的写法将esp-box的唤醒程序做了如下修改,但是没办法唤醒(alexa),有什么地方疏忽的没有修改吗?

  1. ret |= es7210_write_reg(ES7210_SDP_INTERFACE2_REG12, 0x02); //在es7210.c init()中
    2.afe_config.aec_init = true;
    3.i2s_read(I2S_NUM_0, feed_buffer, chunksize * 4 * sizeof(int16_t),&bytes_read, portMAX_DELAY);//读取4个通道
    4.for (int i = 0; i < chunksize; i++) {
    int16_t ref = feed_buffer[4 * i + 0];
    feed_buffer[3 * i + 0] = feed_buffer[4 * i + 1];
    feed_buffer[3 * i + 1] = feed_buffer[4 * i + 3];
    feed_buffer[3 * i + 2] = ref;
    }//adjust channel
@github-actions github-actions bot changed the title 关于将esp-box的aec算法启用 关于将esp-box的aec算法启用 (AIS-1321) Aug 18, 2023
@feizi
Copy link
Collaborator

feizi commented Aug 18, 2023

AFE config 中的microphone通道修改了吗

        afe_config.pcm_config.total_ch_num = 3;
        afe_config.pcm_config.mic_num = 2;
        afe_config.pcm_config.ref_num = 1;

@ZorkyZorky
Copy link
Author

默认就是。请问可以把需要修改的地方用一个列表整理一下吗?

@ZorkyZorky
Copy link
Author

查看了一下es7210的user guide,里面看到如果只用一根数据线传输两个麦克风和回声通道的值需要启用TDM,看skainet里对es7210的寄存器配置是启用的1XFS TDM的形式,但是ESP32S3端的I2S好像没有配置TDM,也就是#if SOC_I2S_SUPPORTS_TDM,请问这个需要设置吗?是在哪里设置?

@BlueSkyB
Copy link

esp-box那边的程序可能和目前esp-skainet中的代码存在差异,esp-box的代码情况不是很了解,只根据目前esp-skainet中的代码,回答你提到的几个问题:

  1. 目前skainet中的音频驱动,是基于esp-adf中的esp_codec_dev组件调用进行的,并没有直接调用es7210的驱动接口,驱动请不要随意修改,目前集成的esp_codec_dev版本是满足esp-skainet中的功能需求的。如果确实有需求要修改音频驱动,可能需要移步到esp-adf那边提issue,看如何修改移植新的驱动。我们这边无法提供更多有效的帮助。

  2. 目前skainet中,并没有使用TDM模式,可以理解为还是I2S,只是底层的IDF做了适配。当然,这些动作都是基于esp_codec_dev组件接口进行的。

  3. 目前的skainet示例代码,是支持在esp-box上运行的,不需要进行代码修改。在示例代码目录下,只需要将sdkconfig.defaults.esp32s3box文件,拷贝替换之前的sdkconfig文件,即可编译运行。

  4. 如果想体验AEC,打开afe_config.aec_init = true配置即可。

以上都是基于skainet项目情况进行回答的,如果是想基于esp-box体验更多功能,碰到音频问题,可能需要在esp-box那边提issue,请他们看看项目的驱动问题。

@ZorkyZorky
Copy link
Author

不太理解,如果不启用TDM模式,是怎么读到回声通道的?标准的I2S只有双通道呀

@feizi
Copy link
Collaborator

feizi commented Sep 13, 2023

因为一个I2S通道32bit,可以采集两路16bit麦克风的信号,所以两个I2S通道可以采集4路麦克风信号

@ZorkyZorky
Copy link
Author

你们有采用两个I2S通道吗,在ESP-box里吗?请问方便分享一下相关代码吗?[email protected]谢谢

@espressif2022
Copy link

espressif2022 commented Sep 14, 2023

你们有采用两个I2S通道吗,在ESP-box里吗?请问方便分享一下相关代码吗?[email protected]谢谢

image
这边是一路 I2S, 然后 esp-box 仓库也是依赖的 esp_codec_dev 组件。
硬件上 ADC 3,4 也是接到了同一个 I2S,如上 ES7210 的寄存器 SDOUT_MODE 应该是要配置的,现在默认是只接受 ADC12
修改办法,我看下了下组件留了接口,如下:

if (es7210_is_tdm_mode(codec)) {
        ret |= es7210_write_reg(codec, ES7210_SDP_INTERFACE2_REG12, 0x02);
        ESP_LOGI(TAG, "Enable TDM mode");
    } else {
        ret |= es7210_write_reg(codec, ES7210_SDP_INTERFACE2_REG12, 0x00);
    }

@feizi feizi closed this as completed Jun 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants