gpt4 book ai didi

c - 用 C 语言实现实时程序时遇到问题

转载 作者:行者123 更新时间:2023-11-30 16:04:27 25 4
gpt4 key购买 nike

我有一个编码器,它对我作为输入提供的语音文件(.wav)进行编码。现在我想做的是编写一个程序,以便我可以在麦克风中说话,同时编码器可以处理它。基本上我想实时记录和处理语音信号(可以容忍小的延迟)。为此,我正在考虑创建一个循环,在该循环中,我首先将语音记录在一个文件中,例如:speech.in,然后我会将此文件复制到临时文件,并将该临时文件传递给编码器。与此同时,录音机应覆盖speech.in 文件并在其中保存接下来的1 秒数据。并继续此循环...

我遇到的问题是我无法编写程序来控制录音机做我想要的事情。有没有可以轻松控制的录音机或任何代码来做到这一点?

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

*编辑:我正在使用 Ubuntu 10.04,但我也在 Windows 上使用了相同的程序,因此欢迎对任一平台提出任何建议

最佳答案

您提出的方法不是正确的方法。至少,Windows 和 Mac 上不是这样的。 (我不知道 Linux 风格的机器如何做到这一点,但我猜方法是相同的)

你必须打开音频设备,并分配一组(比如 4 个)内部内存缓冲区(100 毫秒的声音长度就足够了,但你必须尝试获得多小的缓冲区(越小,延迟越短,但出现音频故障的可能性就越大))。您将它们附加到音频设备,并在这些缓冲区被填满时请求回调。当您收到第一个回调时,请确保在音频设备再次使用第一个缓冲区并被新数据覆盖之前对缓冲区进行足够快的编码。

您可以同时再次将编码的声音输出到音频设备。延迟将类似于 1 个缓冲区的长度。

关于c - 用 C 语言实现实时程序时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com