qq_36028452 2021-09-10 15:58
浏览 51
已结题

stmf401使用speex进行语音数据编码

环境:stm32f401标准库
功能:使用speex实现语音原始数据压缩
问题描述:参考了stm32f103RB的speex代码(没有跑起来)移植过去的代码,语音数据从DMA获取。
步骤:1、speex初始化,
void Speex_Init(void)
{

int HIGHPASS=0;
  /* Speex encoding initializations */ 
  speex_bits_init(&bits);
  enc_state = speex_encoder_init(&speex_nb_mode);
  speex_encoder_ctl(enc_state, SPEEX_SET_VBR, &vbr);
  speex_encoder_ctl(enc_state, SPEEX_SET_QUALITY,&quality);//4
  speex_encoder_ctl(enc_state, SPEEX_SET_COMPLEXITY, &complexity);//1
    speex_encoder_ctl(enc_state, SPEEX_SET_HIGHPASS, &HIGHPASS); //关闭高通滤波
  /* speex decoding intilalization */
  dec_state = speex_decoder_init(&speex_nb_mode);
  speex_decoder_ctl(dec_state, SPEEX_SET_ENH, &enh);
}

1、获取到语音数据后进行编码,
speex_bits_reset(&bits);
speex_encode_int(enc_state,i2srecbuf1, &bits);//i2srecbuf1是采集到的原始语音数据
nbBytes = speex_bits_write(&bits, out_bytes ,ENCODED_FRAME_SIZE);
3、再对编码后的数据进行解码再进行播放
speex_bits_read_from( &bits, bytes, nbBytes );
speex_decode_int( dec_state, &bits, (spx_int16_t*)i2sDMAPlayBuff1 );//i2sDMAPlayBuff1播放的语音数据

错误:但是播放经过解码后的语音是不正确的语音 耳机里面是噪音。再没有编码与解码步骤直接播放 语音就是正确的。然后我单步调试去看这个数据发现编码之前的语音数据与解码后的语音数据不一样。所以才导致耳机里面全是噪音
请问一下这个是我的speex初始化的问题吗 还是这个speex不能再这个mcu上运行?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 9月18日
    • 创建了问题 9月10日

    悬赏问题

    • ¥15 unity2D 关于圆心产生偏移的问题
    • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
    • ¥15 如何根据一个截图编写对应的HTML代码
    • ¥15 谁能远程帮我装好软件,破解覆盖主程序,启动后左侧选择字典,输入单词,报酬15元,加我微信15218392686
    • ¥15 stm32标准库的PID角度环
    • ¥15 ADS已经下载好了,但是DAS下载不了,一直显示这两种情况,有什么办法吗,非常急!
    • ¥100 Excel 点击发送自动跳转outlook邮件
    • ¥15 gis中用栅格计算器或加权总和后图层不显示,值也明显不对
    • ¥15 python使用python-pptx如何给幻灯片添加只读密码。
    • ¥15 深度神经网络传递自变量损失