OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12162|回复: 15

求助,项目剩余时间不多了,STM32实现话筒防啸叫的功能,这样的思路可以实现么?

[复制链接]

0

主题

0

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2019-5-30
在线时间
3 小时
发表于 2014-3-22 17:13:36 | 显示全部楼层 |阅读模式
思路1:利用STM32实现音频信号的频谱分析,然后设计一个滤波器,在STM32平台上实现滤波,将容易发生啸叫的频率点除掉,从而达到防止发生啸叫的目的;
思路2:利用STM32对音频信号进行频谱分析,然后检测频谱中是否出现过高的增益幅度,如果出现,就发出一个控制信号,将音响的电源中断0.5s,这样就可以将声反馈循环切断,从而达到防止发生啸叫的目的。
(简单说下啸叫的机理,就是同样的声音在经音响放大后,再一次被话筒拾取,音响重新放大一次,形成循环,最终成为啸叫的声音)

我对STM32还很陌生,只是听说它很强大,这个项目是学校的一个创新项目,经费只有2000元,剩余时间只有3个月的样子,请各位大神分析一下我们的思路能实现预定功能么?哪个思路好一点,方便实现呢?  如果都不行,能提供一些其他可以方便实现的思路么?感激不尽。QQ:452557211  如果能帮我们顺利完成项目,定当酬谢
以下是我们用smaart live软件分别在没有啸叫和有啸叫两种情况下测得的频谱图:




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13138
金钱
13138
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-3-22 17:18:25 | 显示全部楼层
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2014-3-22 17:23:48 | 显示全部楼层
没接触过,有几点不太明白

楼主是声音的反复放大造成的循环,但这只是振幅提高吧,和频率有关系吗、
如果出现过高的频率,为什么要断点0.5s,而不直接做低通滤波、
容易发生啸叫的频率点是什么意思、
对于音频信号的谱分析,通常是采样STFT或者是DWT,STM32能否处理过来、
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-3-22 17:43:40 | 显示全部楼层
回复【楼主位】tsuibeyond:
---------------------------------
直接加个限幅芯片即可,原理和你的思路2差不多

用过这个芯片就有限幅功能http://www.openedv.com/posts/list/25344.htm
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2019-5-30
在线时间
3 小时
 楼主| 发表于 2014-3-22 22:30:18 | 显示全部楼层
回复【3楼】lsj9383:
---------------------------------
抱歉呀,原文中打错了几个字,发生啸叫时 从音频的时域图(表征声音振幅情况的图)看不出什么特别的,我们已经用示波器看过了,刚刚又上传了我们用smaart live 软件测的频谱图,可以看出某些频率点的增益变化会比较大。
其实我们也不知道该用什么型号的单片机,只是听说它比较强大,我们中期答辩的时候由于进度比较慢,还被老师批评了,所以想尽快把这个项目做完。
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-8-13
在线时间
0 小时
发表于 2014-8-14 06:57:10 | 显示全部楼层
回复【5楼】tsuibeyond:
---------------------------------
楼主的问题解决了么?我现在碰见同样的问题,思路跟你的思路1是一样的,可是因为啸叫频率不确定,如果硬件实现,需要多个陷波器来解决,且工程量大,效果也不好,用数字滤波器是最好的,可是我没接触过,题目明天就要交了,能不能麻烦楼主帮忙想想办法,传传经。如果可以的话,能否把程序发到我邮箱,感激不尽!1216576065@qq.com
越努力越幸运,优秀是一种习惯
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-8-13
在线时间
0 小时
发表于 2014-8-14 07:06:32 | 显示全部楼层
回复【3楼】lsj9383:
---------------------------------
老师,你好,如果用STM32做FFT对音频信号处理,在频域中找到啸叫频率,那对应的幅值应该怎样做处理好?我的处理函数如下,可是结果都不成功,还请老师帮忙解决下,谢谢!其中,Frequency是啸声频率,complex f[]是音频信号经过FFT处理的数据。亟待解决,麻烦老师了!
void notice_freq(int N, complex f[])
{
  uint16_t i,j,count,flag;
  float freq[1024];
  for(count=0;count<1024;count++) //分离出频率数据
  {
   freq[count]=f[count].imag;
  }

    for(j=0;j<1024-1;j++) //检测啸声频率
 {
    if(freq[j]==Frequency)
  flag =  j;  
 }
    //啸声频率附近的幅值衰减
for(i=flag-200;i<=flag+200;i++)
{
   f.real = f.real/2;
   f.real = f.real/2;
}
}
越努力越幸运,优秀是一种习惯
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2014-8-14 12:42:03 | 显示全部楼层
回复【7楼】小明去:
---------------------------------
找到啸叫点后,

对其采用陷波器,

抑制该点即可。
回复 支持 反对

使用道具 举报

13

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2014-4-9
在线时间
9 小时
发表于 2014-8-14 17:44:22 | 显示全部楼层
防啸叫功能在DSP平台上一般是做移频,但STM32能不能实现就不知道了。
大海啊,全是水; 骏马啊,四条腿。
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-8-13
在线时间
0 小时
发表于 2014-8-14 17:45:44 | 显示全部楼层
回复【9楼】ArchiChain:
---------------------------------
好吧 谢谢啦 我们没有做过移频的,我们再试试吧
越努力越幸运,优秀是一种习惯
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-14 23:01:46 | 显示全部楼层
啸叫不是某个频率的问题.
只要你的喇叭和咪头够近,任何可以听到的频率,都可以啸叫....
所以加限幅器,我觉得才是正道.
一般的CODEC都有ALC功能,好好用好ALC应该可以有效防止啸叫.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-8-13
在线时间
0 小时
发表于 2014-8-14 23:03:06 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
恩恩 好的 谢谢原子老师了 受教了
越努力越幸运,优秀是一种习惯
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-8-13
在线时间
0 小时
发表于 2014-8-14 23:07:24 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------

老师,为什么我用AD采集DA输出时 我的程序不知道为什么 DA寄存器里面的值都是正确的,可是示波器上的波形幅值不稳定且衰减太大 比如我采集2.5v 10k的信号,示波器显示10k 100-200mv左右不定呢?
越努力越幸运,优秀是一种习惯
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-14 23:45:37 | 显示全部楼层
2.5V,是哪里的信号?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2019-5-30
在线时间
3 小时
 楼主| 发表于 2014-11-22 13:22:22 | 显示全部楼层
经过一段时间的努力,我们的项目终于在10月中旬结题了,由于结题后课还比较多,所以现在才来对项目进行总结,在此发帖,也希望能帮到其他需要的同学,项目的思路和设计比较简单,成品也比较粗糙,还请各位前辈多多指点~~~
最后制成的成品,可以实现对啸叫信号的抑制,不足之处就是它有时候会把音调较高的正常语音信号误判成啸叫信号,而且在抑制啸叫的时候,还会出现声调的改变,究其原因,就是滤波器制作的太粗糙,但是鉴于经费只有2000块,时间紧,只好这样草草收场了~~下面简单介绍下我们的项目设计思路:
首先我们用一片LM324制作了一块信号三分电路(其实就是四个跟随器啦),将语音信号分为完全相同的三路,分别记为A、B、C路,其中A路信号经TDA2822进行放大,信号幅值调整到0~3.3V,以便单片机进行AD采集。此处我们使用微雪的STM32F103ZET6板子(大概100多块吧)作为数据处理中心,使用它主要是因为它体积相对较小,而且主频可以达到72M,运算速度快,基本可以实现对音频信号的FFT分析,自身又带有AD功能,当然,最主要的还是价格便宜(经费少,伤不起)~~。将音频信号进行AD转换后接着进行FFT分析,对容易出现啸叫的频率点进行监测;B路中,我们接了一个模拟滤波器(我们本来是想进行数字滤波来的,可是很明显72M的主频不能满足这样的要求,DSP开发板太贵而且之前没有接触过,所以就那模拟滤波器凑合了),这里我们又偷了一个懒,我们直接采用MAX274滤波芯片搭建了一个滤波器,计算软件也很好用,效果蛮好的,也很稳定,就是后来板子上的电阻有点多,利用它对啸叫频率点进行针对性抑制。也许你已经看出问题来了,我们的滤波器是模拟的,即参数是固定的,但是啸叫信号的频率点是在一定范围内波动的,很难做到针对性的抑制,鉴于此,我们只好将滤波器做的粗枝大叶些,将在一定范围内波动的啸叫点全部包含进去,最后,成了一个低通滤波器(老师告诉我们,音频信号保留0~3000HZ就不怎么影响语音信号的理解了);C路,我们什么功能器件也不加,就是一根忽略电阻的导线。然后,B、C两路接到由A路控制的模拟开关上(TS5A22364),也就是说当单片机监测到啸叫信号时,就发出信号控制模拟开关让B路导通,否则就让C路导通,这样就可以实现对啸叫信号的监测和抑制了。
下图为核心电路板:


做过2014年TI杯的人可能发现,我们的项目跟这年题目中的某题很想哎~~很无语,我们竟然提前那么长时间猜到了题目,而且项目思路如出一辙,冤~~~
项目简单介绍完了,如果还有什么东西没有说的话,应该还剩下单片机程序了,算法挺简单的,就一个AD加FFT加GPIO口高低电平的控制,对板子熟悉的话应该编程不是很难~~
希望此文对需要的人能够有所帮助,小弟不经常来论坛,希望交流的话Email:tsuibeyond@foxmail.com
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-23 00:23:40 | 显示全部楼层
回复【15楼】tsuibeyond:
---------------------------------
谢谢分享,都是这样了,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-28 22:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表