我正在尝试将在android上录制的音频数据流到一个微控制器上进行播放。音频使用AudioRecord类进行记录,然后通过UDP发送。在接收端,微控制器接收数据并使用PWM进行播放.不过,有几个问题:
因此,所有这些加在一起只会产生噪音作为输出。当我在MIC附近“制造一些噪音”时,唯一改变的是输出噪声的体积和模式。但是,这种模式没有任何意义,对于人类的声音和音乐也是一样的。
这是我在通过UDP发送数据之前为转换数据而编写的代码:
float divider = 8/7.2f;
int index=0;
recorder.read(record_buffer,0,buffer_size);
for(float i=0;i<buffer_size;i+=divider)
{
send_buffer[index++]= (byte) (record_buffer[(int)i] >> 8);
}我不知道从这里往哪里走。如有任何建议,将不胜感激。
更新:我采纳了RussSchultz的建议,在UDP上发送了一个正弦波,并将输出连接到我的廉价O-范围。我得到的是:
No Data : http://i.stack.imgur.com/1XYE6.png
No Data Close-up: http://i.stack.imgur.com/ip0ip.png
Sine : http://i.stack.imgur.com/rhtn0.png
Sine Close-up: http://i.stack.imgur.com/12JxZ.png当我开始发送正弦波时会出现漏洞,这可能是硬件上缓冲区溢出的结果。由于空白遵循一种模式,所以不可能是UDP数据丢失。
发布于 2015-12-21 19:28:19
所以在做了一个月的工作之后,我开始工作了。
是躁郁症。我不得不把它转换成8位,在每个样本中增加一半的动态范围,并取上8位。
虽然我有轻微的频移,但还是可以接受的。
我把过滤器改成了一个确切的3.6KHz低通RC滤波器(使用了许多在线计算器之一)。扬声器不应该直接连接,因为它需要一个当前的uC不能提供。你仍然会得到一个输出,但质量不是很好。你应该做的是驾驶扬声器使用达林顿对或(如我已经)使用一个简单的运算放大器电路。
https://stackoverflow.com/questions/33456751
复制相似问题