从16位PCM中去除c++中的音频噪声(嘶嘶)
Removing audio noise (hissing) in C++ from 16bit PCM
我一直在浏览堆栈溢出的帖子,但我不明白如何从我的音频中删除从麦克风抓取的嘶嘶声。
我实现了一个简单的低通滤波器,但我一定是做错了什么。
unsigned short *buf = "audio data in PCM format";
double out_sample = 0;
int sample_size = "number of samples of audio";
for (int n = 0; n < sample_size/2; n++)
{
out_sample = (out_sample * 90 + buf[n] * 10) / 100;
buf[n] = (unsigned short) out_sample;
}
上面的内容会产生非常糟糕的音频。
我知道我需要在PCM数据上做一个低通滤波器。有没有人能告诉我我做错了什么?
PCM数据实际上总是带符号的数据。你可能会看到每个负值突然被视为一个巨大的值(>32768)。然后通过"低通过滤器"将其过滤为双值。假设一开始你的直流偏置为零,你的滤波器将产生一个接近32768的直流平均值,但顶部有一个相当不可预测的和不具有声学意义的信号。
相关文章:
- 用c++阅读音频
- 为什么这个音频包络不能通过开关的情况?
- FFMpeg库:如何在音频文件中精确查找
- 需要反转音频步进公式
- 如何在音频处理中使用超能力时间拉伸类
- 在细胞中产生噪声 - CPP 和 GLSL
- C++新手,想知道如何使用VS code 2019播放音频文件
- 在没有密钥的情况下读取密文的剩余噪声预算
- 如何暂停插孔音频客户端
- 为什么这个噪声函数不处理否定参数?
- 如何以编程方式将音频从任何录制设备路由到任何播放设备
- 将音频从浏览器流式传输到WebRTC本机C++应用程序
- 使用IMFSourceReader(Microsoft媒体基金会)进行音频流传输
- 大声音频无法播放
- 让 iaxClient 将音频发送到缓冲区而不是音频设备/从缓冲区获取音频
- 适用于 macOS 的 Xcode 应用程序。这就是我设置从USB麦克风输入获取音频的方式。一年前工作,现在没有了。为什么
- 波形音频 - waveOutWrite 发出断断续续的声音
- WASAPI 共享模式:音频引擎预期的振幅是多少?
- 写入wav[PMC]的音频缓冲区整数会产生高噪声
- 从16位PCM中去除c++中的音频噪声(嘶嘶)