在我之前的项目中,我展示了如何使用Arduino开发板和BitVoicer服务器控制几个LED 。在这个项目中,我将使事情变得更加复杂。我还将使用Arduino DUE数模转换器(DAC)合成语音。如果您没有Arduino DUE,则可以使用其他Arduino板,但是您将需要一个外部DAC和一些其他代码来操作DAC(BVSSpeaker库将无法帮助您)。
在下面的视频中,您可以看到我还让Arduino播放了一首歌曲,并使LED闪烁,就像它们是钢琴键一样。对不起,我的钢琴技巧,但这是我能做到的最好的:)。LED实际上以与真实C,D和E键相同的顺序和时序闪烁,因此,如果您周围有钢琴,则可以跟随LED并播放同一首歌曲。这是一个不再存在的老零售商(Mappin)的叮当声。
将执行以下过程将语音命令转换为LED活动和合成语音:
1. Sparkfun Electret Breakout板将捕获并放大音频波;
2.放大后的信号将通过Arduino的模数转换器(ADC)进行数字化和缓冲;
3.音频样本将使用Arduino串行端口传输到BitVoicer服务器;
4. BitVoicer服务器将处理音频流并识别其包含的语音;
5.识别的语音将映射到预定义的命令,这些命令将发送回Arduino。如果其中一个命令用于合成语音,则BitVoicer Server将准备音频流并将其发送到Arduino;
6. Arduino将识别命令并执行适当的操作。如果接收到音频流,它将被排队到BVSSpeaker类中,并使用DUE DAC和DMA播放。
7. SparkFun单声道音频放大器会放大DAC信号,因此可以驱动8欧姆扬声器。
第一步是将Arduino和面包板与组件连接,如下图所示。我必须在扬声器下方放置一个小的橡胶垫,因为它会振动很多,而没有橡胶垫的话,音频质量会受到很大影响。
在这里,与我以前的项目相比,有一个小但重要的区别。大多数Arduino板均以5V运行,但DUE以3.3V运行。因为在3.3V下运行Sparkfun驻极体突破效果更好,所以如果您使用5V Arduino板,建议您在3.3V引脚和AREF引脚之间添加一个跳线。DUE已经使用了3.3V模拟基准,因此您不需要AREF引脚的跳线。实际上,DUE上的AREF引脚通过电阻桥连接到微控制器。要使用AREF引脚,必须从PCB上拆下电阻器BR1。