3234|4

1377

帖子

2

TA的资源

五彩晶圆(初级)

楼主
 

【ESP32-Korvo测评】(6)麦克风阵列算法效果初评 [复制链接]

 

  ESP-Korvo 这块板子吸引我的地方,就是配置了麦克风阵列并且可以在软件中自由使用(尽管不是开源的)阵列算法。在上一篇帖子中我介绍了音频数据流的处理过程以及实现了PCM音频的抓取,再评估音频算法就方便了。现在来抓取麦克风阵列算法处理前后的音频,分别保存到两个文件中,再进行对比,就可以初步评估阵列对于录音效果的作用。

  为了保存两个需要的录音文件,需要两个环行缓冲区,然后在阵列算法的任务中加入写缓冲区的调用:

while (1)                                                                        
{                                                                                
	rb_read(rec_rb, (uint8_t *)mase_in, MASE_FRAME_BYTES * nch, portMAX_DELAY);  
    mase_process(mase_handle, mase_in, mase_out);                                
    rb_write(mase_rb, mase_out, MASE_FRAME_BYTES, portMAX_DELAY);                
	if(dump_enabled)                                                             
	{                                                                            
		rb_write(dump1_rb, mase_in, MASE_FRAME_BYTES, portMAX_DELAY);            
		rb_write(dump2_rb, mase_out, MASE_FRAME_BYTES, portMAX_DELAY);           
	}                                                                            
}                                                                                

  因为阵列算法MASE的输入是AEC算法的输出,从 rec_rb 这个缓冲区获取 mase_in,  处理后将 mase_out 写到 mase_rb 缓冲区,故我只用另外保存 mase_in, mase_out 的数据就实现了抓取。输入是3通道的,输出是单通道的。我只需要一个输入通道音频就够评估了,因此写的两段音频长度相等。这里 AEC 和 MASE 算法的多通道数据格式是非常规的——常规PCM应当是Ch1[n] Ch2[n] Ch3[n] Ch1[n+1] Ch2[n+1] Ch3[n+1] Ch1[n+2] Ch2[n+2] Ch3[n+2] ... 这么排列,然而这里是每个通道连续 MASE_FRAME_BYTES 长度再下一个通道。这样代码有bug的: MASE_FRAME_BYTES 和前面的 AEC_FRAME_BYTES 必须相等,否则数据结构就不一致,必然造成混乱。

 

  好,录一段来回放看看有什么效果提升。为了对比,把MASE前后音频放在两个声道:上面波形是MASE处理之前的,下面是处理后的。

  奇怪了,AEC 算法之后的音频有问题。我已经录过原始麦克风的音频,没有这样的异常。仔细看,每隔0.016秒就有一个脉冲波形:

也就是每256个采样会出现一个异常的脉冲,间隔正好是 AEC_FRAME_BYTES 的大小。我怀疑 ESP-Skainet 里面的 AEC 算法有bug,至少在 get_started 这个例子的代码运行表现出来了。

 

  可以很明显地看出:尽管 AEC 处理之后增加了时域上是脉冲串的噪声,MASE 算法居然把这个噪声给消除了

  经过我的听音,我认为 MASE 算法除了抑制这样规律性的噪声,对它所认为的“语音”成分会进行适度的“增强”,否则会削弱;低频范围总体上都是削弱了的。

  为了排除 AEC 算法 bug 的影响,我在代码里面将 AEC 处理给取消了,再进行录音实验。

  给一段有语音的录音处理前后短时谱的对比:

  我个人认为,MASE 处理并不会“提升音质”,只是动态地把不同频率成分进行了增益调节,这种处理对语音识别算法、语音压缩编码等后续处理是有好处的。单纯从录音的角度看来,它并没有使得听不清楚的声音变得清楚,反而会增加一些原本没有的噪音。

  阵列对不同方向的声音是否有作用?我尚未从实验得到结论。

  最后附一段录音,里面背景噪声主要来源于正在烧开水的壶。有兴趣的网友可以下载来听,比较 MASE 算法处理前后的录音效果。

MASE_compare.flac

637.28 KB, 阅读权限: 10, 下载次数: 0

最新回复

谢谢分享   详情 回复 发表于 2021-4-13 11:53

赞赏

1

查看全部赞赏

点赞(1) 关注
 
 

回复
举报

7608

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 

华健兄音频处理玩的太专业了

点评

道长见笑了,我玩玩,略知皮毛而已。这样的算法我是写不出来的。  详情 回复 发表于 2021-3-7 18:32
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

1942

帖子

2

TA的资源

版主

板凳
 

流批流批!音频专业户!

 
 
 

回复

1377

帖子

2

TA的资源

五彩晶圆(初级)

4
 
freebsder 发表于 2021-3-6 21:34 华健兄音频处理玩的太专业了

道长见笑了,我玩玩,略知皮毛而已。这样的算法我是写不出来的。

 
 
 

回复

661

帖子

0

TA的资源

纯净的硅(初级)

5
 

谢谢分享

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表