通过C中的FFT向wav文件添加1000Hz噪声

通过C中的FFT向wav文件添加1000Hz噪声,c,audio,fft,C,Audio,Fft,我有一个整数数组(int_16),其中包含Wav文件的所有音频数据。 现在我想获得它的“频域”表示,并添加一个1000Hz的噪声 我读了很多数学书,但我还没有发现这个问题在C语言中的真正实现 我只想发现: 哪个是合适的库(FFTW?) 如何将FFT应用于我的阵列(我可以使用哪个函数) 我获得了什么样的数据以及它们代表了什么 如何添加1000Hz噪声并重建新的Wav 谢谢 您无需将信号转换到频域,然后再转换回来即可执行此操作-您只需在时域中添加1 kHz正弦波即可,例如 #include &l

我有一个整数数组(int_16),其中包含Wav文件的所有音频数据。 现在我想获得它的“频域”表示,并添加一个1000Hz的噪声

我读了很多数学书,但我还没有发现这个问题在C语言中的真正实现

我只想发现:

  • 哪个是合适的库(FFTW?)

  • 如何将FFT应用于我的阵列(我可以使用哪个函数)

  • 我获得了什么样的数据以及它们代表了什么

  • 如何添加1000Hz噪声并重建新的Wav


谢谢

您无需将信号转换到频域,然后再转换回来即可执行此操作-您只需在时域中添加1 kHz正弦波即可,例如

#include <stdint.h>
#include <limits.h>
#include <math.h>

const float kA = 0.1f;         // amplitude = 10% of full scale (-20 dB)
const float kF = 1000.0f;      // frequency = 1 kHz
const float kFS = 44100.0f;    // sample rate = 44.1 kHz

for (int i = 0; i < N; ++i)    // for each sample
{
    samples[i] += (int16_t)(SHRT_MAX * kA * sinf(2.0f * M_PI * kF * i / kFS));
}                              // add sine wave to signal
#包括
#包括
#包括
常数浮点kA=0.1f;//振幅=满量程的10%(-20 dB)
常量浮点kF=1000.0f;//频率=1 kHz
常数浮点kFS=44100.0f;//采样率=44.1 kHz
对于(int i=0;i
您无需将信号转换到频域,然后再转换回来即可完成此操作-您只需在时域中添加1 kHz正弦波,例如:

#include <stdint.h>
#include <limits.h>
#include <math.h>

const float kA = 0.1f;         // amplitude = 10% of full scale (-20 dB)
const float kF = 1000.0f;      // frequency = 1 kHz
const float kFS = 44100.0f;    // sample rate = 44.1 kHz

for (int i = 0; i < N; ++i)    // for each sample
{
    samples[i] += (int16_t)(SHRT_MAX * kA * sinf(2.0f * M_PI * kF * i / kFS));
}                              // add sine wave to signal
#包括
#包括
#包括
常数浮点kA=0.1f;//振幅=满量程的10%(-20 dB)
常量浮点kF=1000.0f;//频率=1 kHz
常数浮点kFS=44100.0f;//采样率=44.1 kHz
对于(int i=0;i
我想你是说1000Hz的音调?当然可以!非常感谢。如果你的目标仅仅是增加一个1000Hz的音调,那么在频域工作就太过分了。只需在样本中添加正弦信号。看看这个代码:谢谢你,伊夫,如果我指定我需要这样做是为了教育目的,也许会更好!我想你是说1000Hz的音调?当然可以!非常感谢。如果你的目标仅仅是增加一个1000Hz的音调,那么在频域工作就太过分了。只需在样本中添加正弦信号。看看这个代码:谢谢你,伊夫,如果我指定我需要这样做是为了教育目的,也许会更好!谢谢你,保罗,如果我明确指出我需要这样做是为了教育目的,也许会更好,因为这可以为许多其他应用开辟道路!在这种情况下,只是一个建议:选择一个从频域处理中以某种方式实际获益的任务可能会更有回报,例如更高效、更容易完成。谢谢你,保罗,如果我指定我需要这样做是为了教育目的,也许会更好,因为它可以为许多其他应用开辟道路!在这种情况下,只需提出一个建议:选择一个从频域处理中以某种方式实际获益的任务可能会更有回报,例如,更高效、更容易完成。