c语言实现snr音频信号实例
时间: 2023-08-17 09:36:31 浏览: 270
下面是一个使用C语言计算音频信号SNR的示例。假设我们有一个长度为`length`的音频信号数组`audio`和一个长度相同的噪声信号数组`noise`,我们可以使用上面提到的`calculateSNR()`函数来计算它们的信噪比。
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 计算语音信噪比(SNR)
float calculateSNR(float* signal, float* noise, int length) {
float signalPower = 0;
float noisePower = 0;
for (int i = 0; i < length; i++) {
signalPower += pow(signal[i], 2);
noisePower += pow(noise[i], 2);
}
noisePower /= length;
float snr = 10 * log10(signalPower / noisePower);
return snr;
}
int main() {
// 假设我们有一个长度为100的音频信号数组和一个相同长度的噪声信号数组
int length = 100;
float audio[length];
float noise[length];
// 填充信号和噪声数组
for (int i = 0; i < length; i++) {
audio[i] = sin(2 * M_PI * i / length); // 此处为示例,使用正弦波作为音频信号
noise[i] = rand() / (float)RAND_MAX; // 此处为示例,使用随机噪声作为噪声信号
}
// 计算信噪比
float snr = calculateSNR(audio, noise, length);
// 输出结果
printf("Signal power = %f\n", pow(audio[0], 2)); // 信号功率
printf("Noise power = %f\n", pow(noise[0], 2)); // 噪声功率
printf("SNR = %f dB\n", snr); // 信噪比
return 0;
}
```
在这个示例中,我们使用正弦波作为音频信号,使用随机噪声作为噪声信号。我们假设它们的长度都为100,然后使用`calculateSNR()`函数来计算它们的信噪比。最后,我们输出信号功率、噪声功率和信噪比的值。
阅读全文