前阵子在CSDN中下载了MSACM的控件(delphi)。
发现在设置语音采集的频率参数的时候,设置每秒采集数据的长度的时候。其设置的参数被系统提示当前的采样频率不能得到windows的支持。
于是查看当前控件的参数设置(缓冲区),发现控件的作者直接把美秒采样数据的长度设置成为缓冲区的长度。这样做在原则上是没有头问题的,但是产生的副作用就是发送的延时增加了。
举例说明:
CCITT -A律
的数据参数是 6, 1, 8000, 8000 ,...
那么就会造成数据的缓冲区的长度是8000Byte。也就是在1秒的时间内缓冲区才会满,延时就会达到1秒。
所以在当前的设计中应该修改ACMin.pas 添加一个bufferlength的参数,然后把ACMIn控件的缓冲区的长度设置为N,这个N的实际是根据你实际环境中需要发送的频率来计算的。
例如 50ms/包
1000/50 = 20 (包的数量)
8000/20 = 400 (缓冲区的长度)
当然 8000 指的是当前数据采样频率下的每秒数据长度。
如果需要该软件的话请发送邮件到 lidayang2006@hotmail.com.