基于Wifi的电子看板语音系统设计实现
2 上位机程序设计
语音传输采用单声道,16位,8 000 Hz采样频率,每秒采集数据16 k。上位机程序使用delphi编写,调用windowsAPI-WaveInOpen函数打开设备。并设置:

调用waveInAddBuffer获取声音数据,得到的声音数据采用自适应差分脉冲编码调制。该算法中对量化步长的调整使用了简单的映射方法,对于一个输入的PCM值X(n),将其与前一时刻的X(n-1)预测值做差值得到d(n),然后根据当前的量化步长对d(n)进行编码,再用此sample点的编码值调整量化步长,同时还要得到当前sample点的预测值供下一sample点编码使用。通过此算法可将样点编码成4bit的码流,一个符号位和3个幅度位。该算法编解码简单只进行相减、查表运算。对CPU要求不高。
压缩的数据通过idudpclient控件传输。参考代码如下:
idudpclient 1.host:=IP
idudoclient 1.port:=PORT
idudoclient 1.SendBuffer
idudpclient控件brodcastenable属性可以打开广播。采用广播方式,所有下位机都可以接收到上位机发出的数据包。
Delphi使用IdUDPServer控件监听端口读取下位机声音数据,解码调用waveOutOpen(),
waveOutPrepareHeader(),wave()utWrit()播放声音。程序流程参如图4所示。本文引用地址:https://www.eepw.com.cn/article/176994.htm
评论