gpt4 book ai didi

c++ - Wav文件噪声去除

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:24 25 4
gpt4 key购买 nike

我正在编写一个将音频录制到 wav 文件中的程序(c++、vs2010、win7)。当我尝试听到音频时,它有很多白噪声。我试图用我编写的另一个程序重新打开该文件。这个程序唯一做的是:

Char buffer[8000*60*2] = {} 
File *wav, *out
Wav = fopen ("raw", "r+")
Out = fopen("out", "a+")
fread(buffer, sizeof (char) *8000*60*2,1,wav)
fwrite(buffer, sizeof (char) *8000*60*2,1,out)
fclose (wav)
fclose (out)

在我通过这个程序传递原始数据后,我可以听到一小部分原始 wav 文件而没有任何噪音(我大胆地将其作为原始数据打开)。我的问题是我没有改变数据中的任何内容,只是再次写入它,就像我可以清楚地听到的魔法一样。我错过了什么?我不对数据进行任何更改。当我写数据时,我把它写成一个短变量。数据短fwrite(数据, 1024,1,wav)

最佳答案

当写入 WAVE 文件时,很多事情可能会导致它有噪音。以下是您应该寻找的几件事:

限制值

普通 WAVE 文件有一个 16 位数据值(如果是立体声,则为两个值),因此如果您按比例放大,您必须确保所有值都在 (32768, -32768) 范围内值并且它们超过该限制,那么您将获得一个随机*值,因此在写入文件时会产生噪音。

用二进制写

正如 Roger 在原始问题的评论中提到的那样,以二进制形式编写很重要,因为如果您尝试使用标准“r”写入文件,您只会得到很多白噪声。

缺少 header

有时,如果您忘记了 header ,您可能还会在输出 WAVE 文件中听到噪音。

希望对您有所帮助。

关于c++ - Wav文件噪声去除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15597086/

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