无法在C中实现实时程序

时间:2010-06-25 13:44:19

标签: c real-time

我有一个编码器,它对我提供的语音文件(.wav)进行编码。现在我想做的是编写一个程序,这样我就可以在麦克风中说话,同时编码器可以处理它。基本上我想要实时记录和处理语音信号(可以容忍一个小的延迟)。为了做到这一点,我正在考虑制作一个循环,我将首先在一个文件中记录语音说1秒,然后我将文件复制到temp并将此温度传递给编码器。在此期间,录音机应该覆盖speech.in文件并将下一个1秒的数据保存在其中。并继续此循环......

我遇到的问题是我不能写一个程序来控制录音机做我想要的事情。是否有任何可以轻松控制的录像机或任何代码?

这是我能想到实现这一目标的唯一方法。任何其他(希望更好)的解决方案也是受欢迎的。

*编辑:我正在使用Ubuntu 10.04但是我在Windows上使用了相同的程序,所以欢迎任何平台上的任何建议

2 个答案:

答案 0 :(得分:1)

你建议的方式不是要走的路。至少,这不是在Windows和Mac上完成的。 (我不知道linux风格的机器会怎么做,但我猜测方法是一样的)

你必须打开音频设备,并分配一组(比方说4个)内部存储器缓冲区(长度为100毫秒的声音就足够了,但是你必须尝试一下你能获得多少小的缓冲区(较小的,延迟越小,但音频故障的可能性就越大))。 您将这些附加到音频设备,并在填充任何这些缓冲区时请求回调。当您第一次回调时,请确保在audiodevice再次使用第一个缓冲区之前对缓冲区进行足够快速的编码,并用新数据覆盖。

您可以再次将编码后的声音输出到audiodevice。延迟类似于1个缓冲区的长度。

答案 1 :(得分:0)

这听起来最好通过线程来实现。

以下是MSDN link