在我的应用程序中,任何一部手机都可以语音连接到我的3G USB调制解调器,通话会立即接听。它通过串行端口接收PCM音频(8000个样本,16位,单声道),并使用Microsoft的语音合成器与呼叫者进行对话。
问题是,应用程序只应在呼叫方停止通话时进行回复。我怎样才能检测到这一点?
我尝试实现了一个3秒计时器,当从串行端口接收到数据时,它会自动复位,所以当计时器被“勾选”时,应该意味着呼叫者沉默了3秒。但它不是这样工作的。我做错了什么?
private void DataRecdFromSerial(object sender, SerialDataReceivedEventArgs e)
{
say.Stop(); say.Start(); // reset timer with interval 5000
int n = usb.BytesToRead;
byte[] comBuffer = new byte[90000];
usb.Read(comBuffer, 0, n);
if(comBuffer.Length > 0)
{
wfw.Write(comBuffer, 0, n); // NAudio Wave File Writer
}
}
private void say_Tick(object sender, EventArgs e)
{
// Caller stopped speaking for 5 seconds (not working)
}