您尚未登录。

楼主 #1 2018-05-03 10:31:19

cokale
会员
注册时间: 2018-05-02
已发帖子: 9
积分: 9

ESP32采集PCM语音数据

各位大拿,请教个问题,如下:
用ESP32采集PCM语音数据,
另外一块板子传输的是PCM数据,就是单声道的;和I2S的双声道不同。
ESP32采集

配置模式,
    i2s_config_t i2s_config = {
        .mode = I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_RX ,              //  TX , RX
        .sample_rate = SAMPLE_RATE,
        .bits_per_sample = 16,                                             
        .channel_format = I2S_CHANNEL_FMT_ONLY_RIGHT,                           //only one channel
        .communication_format = I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB,

        ret= i2s_read_bytes(I2S_NUM, recv_pcm, 320, 0);
        if(ret <= 0)

如果communication_format配置为 I2S_COMM_FORMAT_I2S 可以正常采集数据,ret返回320;
但采集的数据保存为wav播放,播放的不是期望的正常声音。

如果communication_format配置为I2S_COMM_FORMAT_PCM 不能正常采集数据,ret返回-1;

两个问题:esp32能正常采集PCM语音么? 配置I2S和对端的PCM数据是否会不匹配?

离线

楼主 #3 2018-05-03 10:45:16

cokale
会员
注册时间: 2018-05-02
已发帖子: 9
积分: 9

Re: ESP32采集PCM语音数据

图片没法上传,到1%卡主了。

https://pan.baidu.com/s/1WdEZ7e5JpGPMPCOQEwA-bA

看看是否可以打开。

板子是一个modem,输出的PCM语音数据。8khz,16bit采样的。

离线

楼主 #5 2018-05-03 10:52:33

cokale
会员
注册时间: 2018-05-02
已发帖子: 9
积分: 9

Re: ESP32采集PCM语音数据

多谢晕哥

离线

楼主 #9 2018-05-03 16:42:41

cokale
会员
注册时间: 2018-05-02
已发帖子: 9
积分: 9

Re: ESP32采集PCM语音数据

确认板子PCM是打开了的,而且有数据的。

read到的数据保存成wav也能播放,声音效果就是听的感觉哪个配置出问题,失真了。

https://pan.baidu.com/s/1JGi0KNsEB7kgfQhaZ6oTdw

wav头是自己加的
https://pan.baidu.com/s/1PgSk7f4r9hIFznun7kdmEw

离线

楼主 #10 2018-05-03 16:46:43

cokale
会员
注册时间: 2018-05-02
已发帖子: 9
积分: 9

Re: ESP32采集PCM语音数据

晕哥 说:

i2s_config_t i2s_config = {
    .mode = I2S_MODE_MASTER | I2S_MODE_RX | I2S_MODE_PDM,    //master, RX, PDM
    .sample_rate = SAMPLE_RATE,
    .bits_per_sample = BITS_PS,                                   
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
    .communication_format =  I2S_COMM_FORMAT_PCM, //pcm data format
    .dma_buf_count = BUF_COUNT,                   
    .dma_buf_len = BUF_LENGTH,                 
    .use_apll = 0,                               //apll disabled
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1     //interrupt level 1(lowest priority)
};

或者按上面这个试一试。

都试过了,好像不行,只有I2S_COMM_FORMAT_I2S 格式能正常收到数据。

离线

楼主 #12 2018-05-03 19:51:54

cokale
会员
注册时间: 2018-05-02
已发帖子: 9
积分: 9

Re: ESP32采集PCM语音数据

刚刚我把采集的语音,保存下来,这次保存的时候,wave头的num channels由1变为2;就可以播放了。但感觉语速明显快了一倍。

感觉这个就是pcm的语音,通过i2s采集导致的。 是么?

如果是这样的话,是否可以在应用层面,解决这个问题。

https://pan.baidu.com/s/1obSJUb9JtHAdqn99vIzfjA

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn